我是编程和JavaScript的新手,我尝试为代码挑战创建一个界面,但我一直收到以下错误消息:
Type '{ 1100: { albumTitle: string; artist: string; tracks: string[]; }; 2468: { albumTitle: string; artist: string; tracks: string[]; }; 1245: { artist: string; tracks: never[]; }; 5439: { albumTitle: string; }; }' is not assignable to type 'collectionInfo'.
Object literal may only specify known properties, and '1100' does not exist in type 'collectionInfo'.ts(2322)
请我需要你的建议,如何解决这个问题或如何创建一个打字界面,将消除这个错误消息。
This my typescript interface attempt:
interface collectionInfo {
id : {
albumTitle: string | number |;
artist: string | number |;
tracks: string[] | number[] | null;
}
}
const recordCollection: collectionInfo = {
1100: {
albumTitle: "Prisoner",
artist: "Lucky Dube",
tracks: ["Prisoner", "Don\'t Cry"],
},
5条答案
按热度按时间cxfofazt1#
您可以这样做:
尝试重构您的界面
9q78igpj2#
你有两个选择。
首先是使用[id:数字]如下所示:
第二种方法是将id添加到属性中,然后使用数组,如下所示:
dz6r00yl3#
collectionInfo
的结构化方式暗示此类型的示例将是包含单个属性id
的对象,该属性本身表示包含一些其他属性的对象。你需要修改你的类型定义,让对象包含一些Map。这两个解决方案是等价的,尽管我更喜欢第二个:
第一个
bq3bfh9z4#
我可以注意到两个问题:
1.接口定义中有尾随管道
|
。虽然这可能不完全是问题所在。recordCollection
使用1100
代替在接口collectionInfo
中定义的id
。下面是我认为它应该看起来:
或者,如果id必须是数字,则可以尝试以下操作:
ukxgm1gy5#