Я написал этот код
interface Foo {
abcdef: number;
}
let x: Foo | string;
if (x instanceof Foo) {
// ...
}
Но TypeScript дал мне эту ошибку:
'Foo' only refers to a type, but is being used as a value here.
Почему это происходит? Я думал, что instanceof
может проверить, имеет ли мое значение заданный тип, но TypeScript, похоже, не нравится.
Daniel Rosenwasser мог бы быть прав и денди, но я испытываю желание делать поправку к его ответу. Полностью возможно проверить экземпляр x, видеть фрагмент кода.
, Но одинаково легко присвоить x = y. Теперь x не был бы экземпляром C, поскольку y только имел форму C.
class C {
a: number = 10;
b: boolean = true;
c: string = "hello";
}
let x = new C()
let y = {
a: 10, b: true, c: "hello",
}
console.log('x is C? ' + (x instanceof C)) // return true
console.log('y is C? ' + (y instanceof C)) // return false