问题描述
代码沙箱: https://codesandbox.io/s/staging-tree-i8uem?file=/src/index.ts
我有一个函数,可以接受某种类型的对象参数。
interface MY_INTERFACE {
PROP_A: string; // IN MY REAL CASE,THESE ARE NOT STRINGS
PROP_B: string;
PROP_C: string;
PROP_D: string;
}
type OBJECT_PARAM_TYPE = {
[key in keyof MY_INTERFACE]: string;
};
对象类型OBJECT_PARAM_TYPE
必须具有MY_INTERFACE
中存在的所有属性以及一个字符串作为值。
我正在测试的功能:
function someFunction(x: OBJECT_PARAM_TYPE): OBJECT_PARAM_TYPE {
return x;
}
将对象作为变量或对象文字传递时,得到的结果不同。
测试1
传递具有附加属性PROP_E
的对象。
测试1-结果
将对象作为变量传递的代码result1
不会触发任何错误。
只有传递对象文字的代码result2
会触发Extra属性的错误。
那是为什么?
测试2
传递缺少属性PROP_D
的对象。
测试2-结果
两个代码都显示缺少属性PROP_D
的错误,这是该测试的预期行为。
问题
当我在 TEST 1 TEST 1中将变量作为变量传递给对象时,为什么Typescript不会触发Extra属性的错误?
代码沙箱: https://codesandbox.io/s/staging-tree-i8uem?file=/src/index.ts
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)