TypeScript如何处理Union
类型断言或强制转换?
我有两个演示,第一个可行,但是第二个失败。
以下作品,或者您可以查看typescript playground
interface Item {
name: string
}
interface WithFoo {
foo?: string;
}
function addProp(obj: Item | WithFoo) {
obj = obj as WithFoo;
// obj's type cast to WithFoo successfully
obj.foo = 'hello';
}
但是,以下一个失败,see playground here
interface Item {
name: string
}
interface WithFoo {
name: string;
foo?: string;
}
function addProp(obj: Item | WithFoo) {
obj = obj as WithFoo;
// ERROR: Property 'foo' does not exist on type 'Item | WithFoo'.
// Property 'foo' does not exist on type 'Item'.
obj.foo = 'hello';
}
为什么TypeScript对这两个方法的处理方式不同?