From spec: Note that type guards affect types of variables and parameters only and have no effect on members of objects such as properties
209 lines
7.7 KiB
TypeScript
209 lines
7.7 KiB
TypeScript
//// [typeGuardsInClassAccessors.ts]
|
|
|
|
// Note that type guards affect types of variables and parameters only and
|
|
// have no effect on members of objects such as properties.
|
|
|
|
// variables in global
|
|
var num: number;
|
|
var strOrNum: string | number;
|
|
var var1: string | number;
|
|
class ClassWithAccessors {
|
|
// Inside public accessor getter
|
|
get p1() {
|
|
// global vars in function declaration
|
|
num = typeof var1 === "string" && var1.length; // string
|
|
|
|
// variables in function declaration
|
|
var var2: string | number;
|
|
num = typeof var2 === "string" && var2.length; // string
|
|
|
|
return strOrNum;
|
|
}
|
|
// Inside public accessor setter
|
|
set p1(param: string | number) {
|
|
// global vars in function declaration
|
|
num = typeof var1 === "string" && var1.length; // string
|
|
|
|
// parameter of function declaration
|
|
num = typeof param === "string" && param.length; // string
|
|
|
|
// variables in function declaration
|
|
var var2: string | number;
|
|
num = typeof var2 === "string" && var2.length; // string
|
|
}
|
|
// Inside private accessor getter
|
|
private get pp1() {
|
|
// global vars in function declaration
|
|
num = typeof var1 === "string" && var1.length; // string
|
|
|
|
// variables in function declaration
|
|
var var2: string | number;
|
|
num = typeof var2 === "string" && var2.length; // string
|
|
|
|
return strOrNum;
|
|
}
|
|
// Inside private accessor setter
|
|
private set pp1(param: string | number) {
|
|
// global vars in function declaration
|
|
num = typeof var1 === "string" && var1.length; // string
|
|
|
|
// parameter of function declaration
|
|
num = typeof param === "string" && param.length; // string
|
|
|
|
// variables in function declaration
|
|
var var2: string | number;
|
|
num = typeof var2 === "string" && var2.length; // string
|
|
}
|
|
// Inside static accessor getter
|
|
static get s1() {
|
|
// global vars in function declaration
|
|
num = typeof var1 === "string" && var1.length; // string
|
|
|
|
// variables in function declaration
|
|
var var2: string | number;
|
|
num = typeof var2 === "string" && var2.length; // string
|
|
|
|
return strOrNum;
|
|
}
|
|
// Inside static accessor setter
|
|
static set s1(param: string | number) {
|
|
// global vars in function declaration
|
|
num = typeof var1 === "string" && var1.length; // string
|
|
|
|
// parameter of function declaration
|
|
num = typeof param === "string" && param.length; // string
|
|
|
|
// variables in function declaration
|
|
var var2: string | number;
|
|
num = typeof var2 === "string" && var2.length; // string
|
|
}
|
|
// Inside private static accessor getter
|
|
private static get ss1() {
|
|
// global vars in function declaration
|
|
num = typeof var1 === "string" && var1.length; // string
|
|
|
|
// variables in function declaration
|
|
var var2: string | number;
|
|
num = typeof var2 === "string" && var2.length; // string
|
|
|
|
return strOrNum;
|
|
}
|
|
// Inside private static accessor setter
|
|
private static set ss1(param: string | number) {
|
|
// global vars in function declaration
|
|
num = typeof var1 === "string" && var1.length; // string
|
|
|
|
// parameter of function declaration
|
|
num = typeof param === "string" && param.length; // string
|
|
|
|
// variables in function declaration
|
|
var var2: string | number;
|
|
num = typeof var2 === "string" && var2.length; // string
|
|
}
|
|
}
|
|
|
|
|
|
//// [typeGuardsInClassAccessors.js]
|
|
// Note that type guards affect types of variables and parameters only and
|
|
// have no effect on members of objects such as properties.
|
|
// variables in global
|
|
var num;
|
|
var strOrNum;
|
|
var var1;
|
|
var ClassWithAccessors = (function () {
|
|
function ClassWithAccessors() {
|
|
}
|
|
Object.defineProperty(ClassWithAccessors.prototype, "p1", {
|
|
// Inside public accessor getter
|
|
get: function () {
|
|
// global vars in function declaration
|
|
num = typeof var1 === "string" && var1.length; // string
|
|
// variables in function declaration
|
|
var var2;
|
|
num = typeof var2 === "string" && var2.length; // string
|
|
return strOrNum;
|
|
},
|
|
// Inside public accessor setter
|
|
set: function (param) {
|
|
// global vars in function declaration
|
|
num = typeof var1 === "string" && var1.length; // string
|
|
// parameter of function declaration
|
|
num = typeof param === "string" && param.length; // string
|
|
// variables in function declaration
|
|
var var2;
|
|
num = typeof var2 === "string" && var2.length; // string
|
|
},
|
|
enumerable: true,
|
|
configurable: true
|
|
});
|
|
Object.defineProperty(ClassWithAccessors.prototype, "pp1", {
|
|
// Inside private accessor getter
|
|
get: function () {
|
|
// global vars in function declaration
|
|
num = typeof var1 === "string" && var1.length; // string
|
|
// variables in function declaration
|
|
var var2;
|
|
num = typeof var2 === "string" && var2.length; // string
|
|
return strOrNum;
|
|
},
|
|
// Inside private accessor setter
|
|
set: function (param) {
|
|
// global vars in function declaration
|
|
num = typeof var1 === "string" && var1.length; // string
|
|
// parameter of function declaration
|
|
num = typeof param === "string" && param.length; // string
|
|
// variables in function declaration
|
|
var var2;
|
|
num = typeof var2 === "string" && var2.length; // string
|
|
},
|
|
enumerable: true,
|
|
configurable: true
|
|
});
|
|
Object.defineProperty(ClassWithAccessors, "s1", {
|
|
// Inside static accessor getter
|
|
get: function () {
|
|
// global vars in function declaration
|
|
num = typeof var1 === "string" && var1.length; // string
|
|
// variables in function declaration
|
|
var var2;
|
|
num = typeof var2 === "string" && var2.length; // string
|
|
return strOrNum;
|
|
},
|
|
// Inside static accessor setter
|
|
set: function (param) {
|
|
// global vars in function declaration
|
|
num = typeof var1 === "string" && var1.length; // string
|
|
// parameter of function declaration
|
|
num = typeof param === "string" && param.length; // string
|
|
// variables in function declaration
|
|
var var2;
|
|
num = typeof var2 === "string" && var2.length; // string
|
|
},
|
|
enumerable: true,
|
|
configurable: true
|
|
});
|
|
Object.defineProperty(ClassWithAccessors, "ss1", {
|
|
// Inside private static accessor getter
|
|
get: function () {
|
|
// global vars in function declaration
|
|
num = typeof var1 === "string" && var1.length; // string
|
|
// variables in function declaration
|
|
var var2;
|
|
num = typeof var2 === "string" && var2.length; // string
|
|
return strOrNum;
|
|
},
|
|
// Inside private static accessor setter
|
|
set: function (param) {
|
|
// global vars in function declaration
|
|
num = typeof var1 === "string" && var1.length; // string
|
|
// parameter of function declaration
|
|
num = typeof param === "string" && param.length; // string
|
|
// variables in function declaration
|
|
var var2;
|
|
num = typeof var2 === "string" && var2.length; // string
|
|
},
|
|
enumerable: true,
|
|
configurable: true
|
|
});
|
|
return ClassWithAccessors;
|
|
})();
|