我有一个正在使用的界面:
export interface NPMPackage {
name: string;
description: string;
'dist-tags': {
[tag: string]: string;
};
versions: {
[version: string]: {
name: string;
version: string;
dependencies?: {
[packageName: string]: string;
};
};
};
}
这是我的代码:
let dependencies = npmPackage.versions[version].dependencies;
dependencies = Object.entries(dependencies).map( ([name, version]) => ({
name,
version: version.replace(/[^\w\s]/gi, ''),
}));
返回以下错误:
类型“{name:string;version:string;}[]”不可分配给类型
“{[packageName:string]:string;}”。中缺少索引签名
类型“{name:string;版本:string;}[]”。
没有与此调用匹配的重载。重载第1个,共2个,'(o:{[s:string]:
一串ArrayLike):[string,string][]',给出了
以下错误。
类型为“{[packageName:string]:string;}| undefined”的参数不可分配给类型为“{[s:string]:string!}”的参数|
ArrayLike’。
类型“undefined”不可分配给类型“{[s:string]:string;}|ArrayLike”。重载第2个,共2个,'(o:{}):[string,
any][]',给出了以下错误。
类型为“{[packageName:string]:string;}| undefined”的参数不可分配给类型为“{}”的参数。
类型“undefined”不可分配给类型“{}”。
没有
dependencies
函数,它工作时没有错误。
如果我加上
dependencies:any
并更改
versions
变量,而不进行如下操作:
let dependencies = npmPackage.versions[version].dependencies;
// lets make it pretty.
dependencies = Object.entries(dependencies).map( ([name, version]) => ({
name,
version,
}));
它是有效的。
基本上,我要做的是添加dependencies方法来更改对象的结构。对象的结构被传递给新变量
依赖项
.对于这些使用typescript的情况,正确的解决方案是什么?这被认为是打字提示时的好做法吗?
api按描述返回数据,但我想用不同的结构发送给react前端应用程序。
而且我不明白的是,变量是接口中所说的字符串,为什么它不起作用呢?
reproducible