a4f9bf0fce
* Create type aliases for unresolved type symbols * Accept new baselines * Update fourslash tests * Unresolved import aliases create tagged unresolved symbols * Add comments * Accept new baselines * Add fourslash tests
232 lines
3.6 KiB
Plaintext
232 lines
3.6 KiB
Plaintext
=== tests/cases/conformance/types/objectTypeLiteral/indexSignatures/numericIndexerConstrainsPropertyDeclarations.ts ===
|
|
// String indexer types constrain the types of named properties in their containing type
|
|
|
|
interface MyNumber extends Number {
|
|
foo: number;
|
|
>foo : number
|
|
}
|
|
|
|
class C {
|
|
>C : C
|
|
|
|
[x: number]: string;
|
|
>x : number
|
|
|
|
constructor() { } // ok
|
|
|
|
a: string; // ok
|
|
>a : string
|
|
|
|
b: number; // ok
|
|
>b : number
|
|
|
|
c: () => {} // ok
|
|
>c : () => {}
|
|
|
|
"d": string; // ok
|
|
>"d" : string
|
|
|
|
"e": number; // ok
|
|
>"e" : number
|
|
|
|
1.0: string; // ok
|
|
>1.0 : string
|
|
|
|
2.0: number; // error
|
|
>2.0 : number
|
|
|
|
"3.0": string; // ok
|
|
>"3.0" : string
|
|
|
|
"4.0": number; // error
|
|
>"4.0" : number
|
|
|
|
3.0: MyNumber // error
|
|
>3.0 : MyNumber
|
|
|
|
get X() { // ok
|
|
>X : string
|
|
|
|
return '';
|
|
>'' : ""
|
|
}
|
|
set X(v) { } // ok
|
|
>X : string
|
|
>v : string
|
|
|
|
foo() {
|
|
>foo : () => string
|
|
|
|
return '';
|
|
>'' : ""
|
|
}
|
|
|
|
static sa: number; // ok
|
|
>sa : number
|
|
|
|
static sb: string; // ok
|
|
>sb : string
|
|
|
|
static foo() { } // ok
|
|
>foo : () => void
|
|
|
|
static get X() { // ok
|
|
>X : number
|
|
|
|
return 1;
|
|
>1 : 1
|
|
}
|
|
}
|
|
|
|
interface I {
|
|
[x: number]: string;
|
|
>x : number
|
|
|
|
a: string; // ok
|
|
>a : string
|
|
|
|
b: number; // ok
|
|
>b : number
|
|
|
|
c: () => {} // ok
|
|
>c : () => {}
|
|
|
|
"d": string; // ok
|
|
>"d" : string
|
|
|
|
"e": number; // ok
|
|
>"e" : number
|
|
|
|
1.0: string; // ok
|
|
>1.0 : string
|
|
|
|
2.0: number; // error
|
|
>2.0 : number
|
|
|
|
(): string; // ok
|
|
(x): number // ok
|
|
>x : any
|
|
|
|
foo(): string; // ok
|
|
>foo : () => string
|
|
|
|
"3.0": string; // ok
|
|
>"3.0" : string
|
|
|
|
"4.0": number; // error
|
|
>"4.0" : number
|
|
|
|
f: MyNumber; // error
|
|
>f : MyNumber
|
|
}
|
|
|
|
var a: {
|
|
>a : { (): string; (x: any): number; [x: number]: string; a: string; b: number; c: () => {}; d: string; e: number; 1: string; 2: number; foo(): string; "3.0": string; "4.0": number; f: MyNumber; }
|
|
|
|
[x: number]: string;
|
|
>x : number
|
|
|
|
a: string; // ok
|
|
>a : string
|
|
|
|
b: number; // ok
|
|
>b : number
|
|
|
|
c: () => {} // ok
|
|
>c : () => {}
|
|
|
|
"d": string; // ok
|
|
>"d" : string
|
|
|
|
"e": number; // ok
|
|
>"e" : number
|
|
|
|
1.0: string; // ok
|
|
>1.0 : string
|
|
|
|
2.0: number; // error
|
|
>2.0 : number
|
|
|
|
(): string; // ok
|
|
(x): number // ok
|
|
>x : any
|
|
|
|
foo(): string; // ok
|
|
>foo : () => string
|
|
|
|
"3.0": string; // ok
|
|
>"3.0" : string
|
|
|
|
"4.0": number; // error
|
|
>"4.0" : number
|
|
|
|
f: MyNumber; // error
|
|
>f : MyNumber
|
|
}
|
|
|
|
// error
|
|
var b: { [x: number]: string; } = {
|
|
>b : { [x: number]: string; }
|
|
>x : number
|
|
>{ a: '', b: 1, c: () => { }, "d": '', "e": 1, 1.0: '', 2.0: 1, "3.0": '', "4.0": 1, f: <Myn>null, get X() { return ''; }, set X(v) { }, foo() { return ''; }} : { a: string; b: number; c: () => void; d: string; e: number; 1: string; 2: number; "3.0": string; "4.0": number; f: Myn; X: string; foo(): string; }
|
|
|
|
a: '',
|
|
>a : string
|
|
>'' : ""
|
|
|
|
b: 1,
|
|
>b : number
|
|
>1 : 1
|
|
|
|
c: () => { },
|
|
>c : () => void
|
|
>() => { } : () => void
|
|
|
|
"d": '',
|
|
>"d" : string
|
|
>'' : ""
|
|
|
|
"e": 1,
|
|
>"e" : number
|
|
>1 : 1
|
|
|
|
1.0: '',
|
|
>1.0 : string
|
|
>'' : ""
|
|
|
|
2.0: 1,
|
|
>2.0 : number
|
|
>1 : 1
|
|
|
|
"3.0": '',
|
|
>"3.0" : string
|
|
>'' : ""
|
|
|
|
"4.0": 1,
|
|
>"4.0" : number
|
|
>1 : 1
|
|
|
|
f: <Myn>null,
|
|
>f : Myn
|
|
><Myn>null : Myn
|
|
>null : null
|
|
|
|
get X() {
|
|
>X : string
|
|
|
|
return '';
|
|
>'' : ""
|
|
|
|
},
|
|
set X(v) { },
|
|
>X : string
|
|
>v : string
|
|
|
|
foo() {
|
|
>foo : () => string
|
|
|
|
return '';
|
|
>'' : ""
|
|
}
|
|
}
|