问题
能否限制某个对象的key
是在某个联合类型内?
比如
type A = 'a' | 'b' | 'c';
其实简单的实现也能想到,但是觉得并不是很好
type Obj = {
a?: string;
b?: string;
c?: string;
}
在其他需要使用A类型的时候可以使用keyof Obj
也不需要重复定义,这里想问问有没有比较好的实现;
能否限制某个对象的key
是在某个联合类型内?
比如
type A = 'a' | 'b' | 'c';
其实简单的实现也能想到,但是觉得并不是很好
type Obj = {
a?: string;
b?: string;
c?: string;
}
在其他需要使用A类型的时候可以使用keyof Obj
也不需要重复定义,这里想问问有没有比较好的实现;
使用Record类型
type A = 'a' | 'b' | 'c';
const obj: Record<A, string> = {
a: '1',
b: '2',
c: '3',
d: 'asd' // ts报错 不能将类型“{ a: string; b: string; c: string; d: string; }”分配给类型“Record<A, string>”。
对象文字可以只指定已知属性,并且“d”不在类型“Record<A, string>”中
};