Typescript 具有动态和静态属性的接口

Typescript 具有动态和静态属性的接口,typescript,Typescript,我有一个问题是关于一种更动态的接口,在这种接口中,动态和静态属性可以一起使用——即使它们是不同类型的。这可能吗?如果是的话,这有什么意义吗 假设我想要这样的东西 type MyCustomType = { foo: string; }; export interface MyInterface { [key: string]: MyCustomType; bar: string; }; 我想确保某个道具(我事先不知道其名称)指向类型为MyCustomType的值。My

我有一个问题是关于一种更动态的接口,在这种接口中,动态和静态属性可以一起使用——即使它们是不同类型的。这可能吗?如果是的话,这有什么意义吗

假设我想要这样的东西

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;
};

非常感谢您的任何建议:)

这可以通过以下方式完成,使用交叉口:

type MyCustomType = {
    foo: string;
};

type MyInterface = {
    [key: string]: MyCustomType;
} & { bar: string };

为了使交叉口正常工作,MyInterface必须是一种类型。

这可以通过以下方式完成,使用交叉口:

type MyCustomType = {
    foo: string;
};

type MyInterface = {
    [key: string]: MyCustomType;
} & { bar: string };

为了使交叉口正常工作,我的接口必须是一种类型。

这怎么不能回答@JaredSmith的问题?这很好地回答了这个问题,我想从你在原始帖子上的评论来看,你不理解这个问题;)@AliNasserzadeh太棒了!谢谢:)这并不重要,但你能澄清一下吗;
MyInterface
是否必须是
类型
而不是像您的示例中那样的
接口
?如果你在你的帖子中澄清了这一点,我不仅会将其标记为正确答案,还将对其进行投票:)@EntiendNull无问题:)是的,它必须是交叉口的一种类型才能工作。这怎么不能回答问题@JaredSmith?这很好地回答了这个问题,我想从你在原始帖子上的评论来看,你不理解这个问题;)@AliNasserzadeh太棒了!谢谢:)这并不重要,但你能澄清一下吗;
MyInterface
是否必须是
类型
而不是像您的示例中那样的
接口
?如果你在你的帖子中澄清了这一点,我不仅会将其标记为正确答案,而且会对其进行投票:)@EntiendNull没有问题:)是的,它必须是一种交叉点工作的类型。在TypeScript中它绝对有意义并且是可行的,请参阅我的答案在TypeScript中查看它绝对有意义并且在TypeScript中是可行的,看我的答案,看看打字稿