Почему «instanceof» в TypeScript выдает мне ошибку «« Foo »относится только к типу, но используется здесь как значение»?

Я написал этот код

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, похоже, не нравится.

57
задан 12 October 2017 в 10:05

1 ответ

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
1
ответ дан 1 November 2019 в 17:12

Другие вопросы по тегам:

Похожие вопросы: