Typescript 如何将字典与不使用';是否返回相同的类型?

Typescript 如何将字典与不使用';是否返回相同的类型?,typescript,Typescript,在TypeScript中,我知道可以通过以下方式连接字典: 接口MyDictionary{ [键:字符串]:字符串; } 但是,我使用的外部包返回一个字典,其中包含一个方法,用于格式化其中包含的数据,以用于其他目的 因此,我想通过执行以下操作将其连接起来: 接口MyDictionary{ [键:字符串]:字符串; formatForSomethingElse():任意; } 但是,这给了我以下错误: “()=>any”类型的属性“formatForSomethingElse”不能分配给字符串

在TypeScript中,我知道可以通过以下方式连接字典:

接口MyDictionary{
[键:字符串]:字符串;
}
但是,我使用的外部包返回一个字典,其中包含一个方法,用于格式化其中包含的数据,以用于其他目的

因此,我想通过执行以下操作将其连接起来:

接口MyDictionary{
[键:字符串]:字符串;
formatForSomethingElse():任意;
}
但是,这给了我以下错误:

“()=>any”类型的属性“formatForSomethingElse”不能分配给字符串索引类型“string”。ts(2411)

因为我接口的对象是外部的,我无法控制它。在本例中,我唯一的选择是将字典值更改为any?

TLDR 我认为您需要对
数据
方法
进行深度分离

答复 软件oop的术语接口是A组件和B组件之间的一些规则或蓝图

类是
data+method
,所以将
data
method
分开是一个很好的用例

[键:字符串]:字符串|函数
不是oop的直观用例

例子
接口MyDictionary{
[键:字符串]:字符串|函数;
formatForSomethingElse():void;
}
我的建议是

接口MyDictionary{
数据:{
[键:字符串]:字符串;
}
formatForSomethingElse():任意;
}

也许值得重新安排一下界面,以便将项目分开:

interface MyDictionary {
  items: { [key: string]: string; };
  formatForSomethingElse(): any;
}

这回答了你的问题吗?这是有道理的,不幸的是,由于对象是外部的,我没有能力更改它。我无法控制我正在连接的对象,因为它是外部的。我无法控制我正在连接的对象,因为它是外部的