工会无法进行结构性打字?

时间:2019-05-30 17:46:46

标签: typescript

我不太明白为什么以下does not compile

interface IPreciousMetal {
    type: "Silver" | "Gold"
}

interface ICryptoCurrency {
    type: "Bitcoin" | "Litecoin"
}

type Asset = ICryptoCurrency | IPreciousMetal;

function process(assetType: Asset["type"]) {
    const asset = { type: assetType };
    processImpl(asset); // Error
}

function processImpl(asset: Asset) {
    console.log(asset.type);
}

为参数assetType传递的参数必须被键入以使其与Asset类型兼容。但是,当使用上述参数值创建对象时,编译器会抱怨。

1 个答案:

答案 0 :(得分:2)

您使用的是哪个版本的打字稿?打字稿3.5引入了smarter union type checking,应该可以解决您的问题。我认为打字稿游乐场尚未使用该版本。