TypeScript联合类型声明或强制转换

时间:2019-10-17 07:28:42

标签: typescript typescript-typings

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对这两个方法的处理方式不同?

0 个答案:

没有答案