TypeScript/tests/baselines/reference/indexedAccessWithFreshObjectLiteral.types
okmttdhr 7db5f68144
Add index signature for anonymous object literal type (#37903)
* Use ts.map for stylistic consistency

* Show error only if noImplicitAny is set

* Accept baseline for noImplicitAnyIndexing

* Fix lint error

* Add test cases for indexedAccessWithFreshObjectLiteral
2020-11-02 14:35:56 -08:00

167 lines
3.3 KiB
Plaintext

=== tests/cases/compiler/indexedAccessWithFreshObjectLiteral.ts ===
function foo (id: string) {
>foo : (id: string) => string | number | boolean | undefined
>id : string
return {
>{ a: 1, b: "", c: true }[id] : string | number | boolean | undefined
>{ a: 1, b: "", c: true } : { a: number; b: string; c: boolean; }
a: 1,
>a : number
>1 : 1
b: "",
>b : string
>"" : ""
c: true
>c : boolean
>true : true
}[id]
>id : string
}
function bar (id: 'a' | 'b') {
>bar : (id: 'a' | 'b') => string | number
>id : "a" | "b"
return {
>{ a: 1, b: "", c: false }[id] : string | number
>{ a: 1, b: "", c: false } : { a: number; b: string; c: boolean; }
a: 1,
>a : number
>1 : 1
b: "",
>b : string
>"" : ""
c: false
>c : boolean
>false : false
}[id]
>id : "a" | "b"
}
function baz (id: '1' | '2') {
>baz : (id: '1' | '2') => string | number
>id : "1" | "2"
return {
>{ 1: 1, 2: "", 3: false }[id] : string | number
>{ 1: 1, 2: "", 3: false } : { 1: number; 2: string; 3: boolean; }
1: 1,
>1 : number
>1 : 1
2: "",
>2 : string
>"" : ""
3: false
>3 : boolean
>false : false
}[id]
>id : "1" | "2"
}
function qux (id: 1 | 2) {
>qux : (id: 1 | 2) => string | number
>id : 1 | 2
return {
>{ 1: 1, 2: "", 3: false }[id] : string | number
>{ 1: 1, 2: "", 3: false } : { 1: number; 2: string; 3: boolean; }
1: 1,
>1 : number
>1 : 1
2: "",
>2 : string
>"" : ""
3: false
>3 : boolean
>false : false
}[id]
>id : 1 | 2
}
function quux (id: 'a' | 'b' | 'z') {
>quux : (id: 'a' | 'b' | 'z') => string | number | undefined
>id : "a" | "b" | "z"
return {
>{ a: 1, b: "", c: false }[id] : string | number | undefined
>{ a: 1, b: "", c: false } : { a: number; b: string; c: boolean; }
a: 1,
>a : number
>1 : 1
b: "",
>b : string
>"" : ""
c: false
>c : boolean
>false : false
}[id]
>id : "a" | "b" | "z"
}
function corge(id: string) {
>corge : (id: string) => string | number
>id : string
return ({
>({ a: 123, b: "" } as Record<string, number | string>)[id] : string | number
>({ a: 123, b: "" } as Record<string, number | string>) : Record<string, string | number>
>{ a: 123, b: "" } as Record<string, number | string> : Record<string, string | number>
>{ a: 123, b: "" } : { a: number; b: string; }
a: 123,
>a : number
>123 : 123
b: ""
>b : string
>"" : ""
} as Record<string, number | string>)[id]
>id : string
}
function grault(id: string) {
>grault : (id: string) => string | number
>id : string
return ({
>({ a: 123, b: "" } as { [k: string]: string | number})[id] : string | number
>({ a: 123, b: "" } as { [k: string]: string | number}) : { [k: string]: string | number; }
>{ a: 123, b: "" } as { [k: string]: string | number} : { [k: string]: string | number; }
>{ a: 123, b: "" } : { a: number; b: string; }
a: 123,
>a : number
>123 : 123
b: ""
>b : string
>"" : ""
} as { [k: string]: string | number})[id]
>k : string
>id : string
}