给出以下示例:
interface Data {
name: string;
value: number;
}
const data :Data = {
name: 'name',
value: 1,
}
const updateValue = (key: keyof Data, value: string | number): void => {
data[key] = value;
};
Typescript显示以下错误:
Type 'string | number' is not assignable to type 'string & number'.
Type 'string' is not assignable to type 'string & number'.
Type 'string' is not assignable to type 'number'.
这段话很清晰易懂。但是,如果我在接口中添加联合类型,就像这样:
type MultiType = 'x' | 'y';
interface Data {
name: string;
value: number;
multiType: MultiType | null;
}
const data :Data = {
name: 'name',
value: 1,
multiType: null,
}
const updateValue = (key: keyof Data, value: string | number): void => {
data[key] = value;
};
I get the following error:
Type 'string | number' is not assignable to type 'never'.
Type 'string' is not assignable to type 'never'.
如果我使用交叉类型string & number & MultiType
,TypeScript会接受它,但它也会接受never
。
这对我来说似乎不一致。这可能是一个错误吗?
never
的事实? - Kewin Dousse