swc/crates/swc_ecma_parser/tests/tsc/objectLiteralGettersAndSetters.ts

83 lines
2.9 KiB
TypeScript
Raw Normal View History

// Get and set accessor with the same name
var sameName1a = { get 'a'() { return ''; }, set a(n) { var p = n; var p: string; } };
var sameName2a = { get 0.0() { return ''; }, set 0(n) { var p = n; var p: string; } };
var sameName3a = { get 0x20() { return ''; }, set 3.2e1(n) { var p = n; var p: string; } };
var sameName4a = { get ''() { return ''; }, set ""(n) { var p = n; var p: string; } };
var sameName5a = { get '\t'() { return ''; }, set '\t'(n) { var p = n; var p: string; } };
var sameName6a = { get 'a'() { return ''; }, set a(n) { var p = n; var p: string; } };
// PropertyName CallSignature{FunctionBody} is equivalent to PropertyName:function CallSignature{FunctionBody}
var callSig1 = { num(n: number) { return '' } };
var callSig1: { num: (n: number) => string; };
var callSig2 = { num: function (n: number) { return '' } };
var callSig2: { num: (n: number) => string; };
var callSig3 = { num: (n: number) => '' };
var callSig3: { num: (n: number) => string; };
// Get accessor only, type of the property is the annotated return type of the get accessor
var getter1 = { get x(): string { return undefined; } };
var getter1: { readonly x: string; }
// Get accessor only, type of the property is the inferred return type of the get accessor
var getter2 = { get x() { return ''; } };
var getter2: { readonly x: string; }
// Set accessor only, type of the property is the param type of the set accessor
var setter1 = { set x(n: number) { } };
var setter1: { x: number };
// Set accessor only, type of the property is Any for an unannotated set accessor
var setter2 = { set x(n) { } };
var setter2: { x: any };
var anyVar: any;
// Get and set accessor with matching type annotations
var sameType1 = { get x(): string { return undefined; }, set x(n: string) { } };
var sameType2 = { get x(): Array<number> { return undefined; }, set x(n: number[]) { } };
var sameType3 = { get x(): any { return undefined; }, set x(n: typeof anyVar) { } };
var sameType4 = { get x(): Date { return undefined; }, set x(n: Date) { } };
// Type of unannotated get accessor return type is the type annotation of the set accessor param
var setParamType1 = {
set n(x: (t: string) => void) { },
get n() { return (t) => {
var p: string;
var p = t;
}
}
};
var setParamType2 = {
get n() { return (t) => {
var p: string;
var p = t;
}
},
set n(x: (t: string) => void) { }
};
// Type of unannotated set accessor parameter is the return type annotation of the get accessor
var getParamType1 = {
set n(x) {
var y = x;
var y: string;
},
get n() { return ''; }
};
var getParamType2 = {
get n() { return ''; },
set n(x) {
var y = x;
var y: string;
}
};
// Type of unannotated accessors is the inferred return type of the get accessor
var getParamType3 = {
get n() { return ''; },
set n(x) {
var y = x;
var y: string;
}
};