1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
=== tests/cases/compiler/mappedTypeUnionConstrainTupleTreatedAsArrayLike.ts ===
type HomomorphicMappedType<T> = { [P in keyof T]: T[P] extends string ? boolean : null }
>HomomorphicMappedType : HomomorphicMappedType<T>
function test1<T extends [number] | [string]>(args: T) {
>test1 : <T extends [number] | [string]>(args: T) => void
>args : T
const arr: any[] = [] as HomomorphicMappedType<T>
>arr : any[]
>[] as HomomorphicMappedType<T> : HomomorphicMappedType<T>
>[] : []
const arr2: readonly any[] = [] as HomomorphicMappedType<T>
>arr2 : readonly any[]
>[] as HomomorphicMappedType<T> : HomomorphicMappedType<T>
>[] : []
}
function test2<T extends [number] | readonly [string]>(args: T) {
>test2 : <T extends [number] | readonly [string]>(args: T) => void
>args : T
const arr: any[] = [] as HomomorphicMappedType<T> // error
>arr : any[]
>[] as HomomorphicMappedType<T> : HomomorphicMappedType<T>
>[] : []
const arr2: readonly any[] = [] as HomomorphicMappedType<T>
>arr2 : readonly any[]
>[] as HomomorphicMappedType<T> : HomomorphicMappedType<T>
>[] : []
}
|