Версия TypeScript:
по ночам (1.9.0-dev.20160217)
Код
class Example {
get foo() {
return true;
}
baz(example: Example) {
example.foo;
}
bar(example: Example | Object) {
example.foo; // error TS2339: Property 'foo' does not exist on type 'Example | Object'.
}
}
Ожидаемое поведение:
example.foo
не вызовет ошибки ни в одном из методов.
Фактическое поведение:
example.foo
когда example
равно Example | Object
выбрасывает:
error TS2339: Property 'foo' does not exist on type 'Example | Object'.
Это нормальное поведение TypeScript, поскольку он защищает вас от чего-то, что может не иметь .foo
.
Если вы хотите, чтобы это работало, вам нужно сузить тип до того, что содержит .foo
:
class Example {
get foo() {
return true;
}
baz(example: Example) {
example.foo;
}
bar(example: Example | Object) {
if (example instanceof Example) {
example.foo;
}
}
}
Самый полезный комментарий
Это нормальное поведение TypeScript, поскольку он защищает вас от чего-то, что может не иметь
.foo
.Если вы хотите, чтобы это работало, вам нужно сузить тип до того, что содержит
.foo
: