如何将此type alias
转换为界面?
type Color = 'RED' | 'GREEN' | 'BLACK';
const color: Color = 'RED';
我的直觉是要使用,但这是错误的。
interface Color {
[item: 'RED' | 'GREEN' | 'BLACK']: string;
}
const color: Color = 'RED'
我想要做的是用接口替换类型。 因此,基本上该接口类型的变量只能分配以下值之一:“ RED”,“ GREEN”或“ BLUE”
答案 0 :(得分:0)
类型别名和interafecs不能互换。
有时候,如果可以将类型别名解析为简单的对象类型,则两者在它们的处理上非常接近。
如果类型别名是联合,则不能将其更改为接口
答案 1 :(得分:0)
您可以使用generic interface将 Union Type 转换为 Interface 。
这是类型联合:
type Color = 'RED' | 'GREEN' | 'BLACK';
const color: Color = 'RED';
将其转换为接口:
interface Color<Label1="RED", Label2="GREEN", Label3="BLACK"> {
name: Label1 | Label2 | Label3
}
const color: Color = { name: "RED" } // ok, static checked
尽管根据您的特殊用例,您还是希望仅使用enum。像这样:
enum Color {
RED = 'RED',
GREEN = 'GREEN',
BLACK = 'BLACK'
}
const color: Color = Color.RED // ok, static checked ---> color = 'RED'