如何解决无法获得宽度子类型以使用确切类型
我通过“传播” 2种确切的类型来创建类型:
-B
我不明白为什么我不能按如下方式进行宽度子类型化:
type Type1 = {|foo: number|};
type Type2 = {|bar: string|};
type Both = {|...Type1,...Type2|};
我收到此错误:
var a: Both = {foo: 42,bar: 'baz'};
function fooTest(arg: Type1) {
console.log(arg.foo);
}
fooTest(a);
但是从this page,我得知我被允许传递额外的属性,但似乎确切的类型阻止了这种行为。
正确的方法是什么?
编辑: 感谢@Aleksey L.的指针,我最终将函数的参数类型转换为不精确的参数:
../\-:11: fooTest(a);
^ Cannot call `fooTest` with `a` bound to `arg` because property `bar` is missing in `Type1` [1] but exists in `Both` [2]. [prop-missing]
References:
../\-:7: function fooTest(arg: Type1) {
^ [1]
../\-:5: var a: Both = {foo: 42,bar: 'baz'};
^ [2]
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。