【发布时间】:2019-04-05 04:10:42
【问题描述】:
TypeScript Playground 在 Symbol.hasInstance 内置符号上失败,但对其他人有效。
尝试了其他符号方法Symbol.match、Symbol.replace 工作正常,Symbol.hasInstance 被正确识别,如 console.log 中所示
在 typescript playground 和 MDN 上都试过,生成的代码都返回 false。
TypeScript 代码与 Playground 中一样,您可以将以下内容粘贴到 https://www.typescriptlang.org/play/index.html
class Array1 {
static [Symbol.hasInstance](instance) {
console.log(instance);
return Array.isArray(instance);
}
}
console.log(Symbol.hasInstance.toString());
let arr: string[] = ['a', 'b'];
console.log(arr instanceof Array1);
console.log([] instanceof Array1);
// expected output: true
// output is false
单击运行时生成的代码无法在左侧返回 true
var Array1 = /** @class */ (function () {
function Array1() {
}
Array1[Symbol.hasInstance] = function (instance) {
console.log(instance);
return Array.isArray(instance);
};
return Array1;
}());
console.log(Symbol.hasInstance.toString());
var arr = ['a', 'b'];
console.log(arr instanceof Array1);
console.log([] instanceof Array1);
应该返回真而不是假
【问题讨论】:
标签: arrays typescript symbols