Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript 映射接口属性的正确类型_Typescript_Typescript Typings_React Typescript - Fatal编程技术网

Typescript 映射接口属性的正确类型

Typescript 映射接口属性的正确类型,typescript,typescript-typings,react-typescript,Typescript,Typescript Typings,React Typescript,我正在开发的模块(module1)中有以下接口类型 接口模块内部接口{ 关键一:用户界面; 按键二:自定义界面; 键三:自定义界面; } 因此,我目前正在开发第二个模块(module2),它使用上述接口作为其组件中的道具。上面的接口不是从模块(module1)导出的,因此我无法导入它(module2)。我声明了另一个接口,它可以表示第二个模块(module2)中的类型。下面是界面 导出接口模块接口{ //这是一个正在接受模块一接口的模块 模块2关键一:记录; 模块2键2:字符串; } 但这会

我正在开发的模块(module1)中有以下接口类型

接口模块内部接口{
关键一:用户界面;
按键二:自定义界面;
键三:自定义界面;
}
因此,我目前正在开发第二个模块(module2),它使用上述接口作为其组件中的道具。上面的接口不是从模块(module1)导出的,因此我无法导入它(module2)。我声明了另一个接口,它可以表示第二个模块(module2)中的类型。下面是界面

导出接口模块接口{
//这是一个正在接受模块一接口的模块
模块2关键一:记录;
模块2键2:字符串;
}
但这会引发以下错误

TS2345: Argument of type 'ModuleOneInterface' is not assignable to parameter 
        of type 'Record<string, customInterface>'.

任何帮助都将不胜感激。

类型
接口
在大多数情况下是可互换的,但并不总是可互换的

没有索引签名的接口不会扩展带有索引签名的任何内容,因此不可分配给它。
另一方面,类型别名扩展了具有索引签名的任何目标类型(使用
类型
接口
),当且仅当其所有属性都符合索引签名时。即,如果索引签名是从
string
Foo
,则其所有属性必须能够扩展
Foo


这里有一个最简单的例子:

你能提供at吗?如果另一个外部模块已经在使用
模块接口
,这似乎是一个很好的导出它的动机,不是吗?包很少省略类型,通常甚至是私有/内部类型,因为类型系统的全部目的是使使用模块进行开发更加容易。