我有一个问题,涉及一种更动态的界面,其中动态属性和静态属性可以一起使用-即使它们是不同的类型。这可能吗?如果是,那有什么意义吗?
假设我想要这样的东西。
type MyCustomType = {
foo: string;
};
export interface MyInterface {
[key: string]: MyCustomType;
bar: string;
};
我想确保某个道具(我事先不知道名字)指向类型为MyCustomType
的值。我确实知道MyInterface
中其余的属性的名称,并且它们指向其他类型。
上面的代码导致以下错误:
Property 'bar' of type 'string' is not assignable to string index type MyCustomType.
我可以使用交叉点(如下例)或any
来解决这个问题,这也会影响我的动态道具并破坏其类型。
export interface MyInterface {
[key: string]: MyCustomType | string;
bar: string;
};
任何建议都非常感激:)
答案 0 :(得分:3)
可以使用交点通过以下方式完成此操作:
type MyCustomType = {
foo: string;
};
type MyInterface = {
[key: string]: MyCustomType;
} & { bar: string };
为了使交叉口正常工作,MyInterface必须是一种类型。