overrides: [
// tests, no restrictions (runs in Node / jest with jsdom)
{
- files: ['**/__tests__/**'],
+ files: ['**/__tests__/**', 'test-dts/**'],
rules: {
'no-restricted-globals': 'off',
'no-restricted-syntax': 'off'
| CollectionTypes
| BaseTypes
| Ref
- | Array<any>
| RefUnwrapBailTypes[keyof RefUnwrapBailTypes]
? T
- : T extends object ? UnwrappedObject<T> : T
+ : T extends Array<any>
+ ? { [K in keyof T]: T[K] extends Ref ? T[K] : UnwrapRefSimple<T[K]> }
+ : T extends object ? UnwrappedObject<T> : T
// Extract all known symbols from an object
// when unwrapping Object the symbols are not `in keyof`, this should cover all the
expectType<Ref<IteratorFoo | null | undefined>>(
ref<IteratorFoo | null | undefined>()
)
+
+ // should not unwrap ref inside arrays
+ const arr = ref([1, new Map<string, any>(), ref('1')]).value
+ const value = arr[0]
+ if (isRef(value)) {
+ expectType<Ref>(value)
+ } else if (typeof value === 'number') {
+ expectType<number>(value)
+ } else {
+ // should narrow down to Map type
+ // and not contain any Ref type
+ expectType<Map<string, any>>(value)
+ }
+
+ // should still unwrap in objects nested in arrays
+ const arr2 = ref([{ a: ref(1) }]).value
+ expectType<number>(arr2[0].a)
}
plainType(1)