【发布时间】:2022-01-09 01:39:54
【问题描述】:
TypeScript 使用结构类型,这很好,但我注意到它有时会在结构上没有差异时抱怨。为什么会这样?这是怎么回事?
例子:
enum TagType {
SIMPLE = 'simple',
COLLECTOR = 'collector',
}
interface CollectorTag {
type: TagType.COLLECTOR,
}
const tag1_1: CollectorTag = {
type: TagType.COLLECTOR,
};
const tag1_2 = tag1_1;
const tag2_1 = {
type: TagType.COLLECTOR,
};
const tag2_2: CollectorTag = tag2_1;
^^^^^^
Error here
【问题讨论】:
-
tag2_1的类型被编译器推断为{ type: TagType; },所以如果你以后想的话,你可以写tag2_1.type = TagType.SIMPLE。所以那个类型和CollectorTag是不同的,你不能把前者分配给后者。它没有意识到您的意图是type属性应该始终 是TagType.COLLECTOR。要传达该意图,您可以使用const断言,如this,并且一切正常。如果这是有道理的,我可以写一个答案;否则,请详细说明您缺少什么。 -
或者@TitianCernicovaDragomir 可以做到吗????
标签: typescript typescript-typings