Versi TypeScript:
setiap malam (1.9.0-dev.20160217)
Kode
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'.
}
}
Perilaku yang diharapkan:
example.foo
tidak akan menimbulkan kesalahan pada kedua metode tersebut.
Perilaku sebenarnya:
example.foo
ketika example
adalah Example | Object
melempar:
error TS2339: Property 'foo' does not exist on type 'Example | Object'.
Itu adalah perilaku normal TypeScript karena menjaga Anda dari sesuatu yang mungkin tidak memiliki .foo
.
Jika Anda ingin ini berfungsi, Anda perlu mempersempit jenisnya menjadi sesuatu yang berisi .foo
:
class Example {
get foo() {
return true;
}
baz(example: Example) {
example.foo;
}
bar(example: Example | Object) {
if (example instanceof Example) {
example.foo;
}
}
}
Komentar yang paling membantu
Itu adalah perilaku normal TypeScript karena menjaga Anda dari sesuatu yang mungkin tidak memiliki
.foo
.Jika Anda ingin ini berfungsi, Anda perlu mempersempit jenisnya menjadi sesuatu yang berisi
.foo
: