如果不创建新的接口(interface)/类型,并且不将我的类型定义中的所有字段设为可选,我是否可以在不包含所有必需字段的情况下引用一个类型?
这是问题的一个例子:
interface Test {
one: string;
two: string;
}
_.findWhere<Test, Test>(TestCollection, {
one: 'name'
});
作为引用,Underscore 的.findWhere
方法的类型定义是这样的:
findWhere<T, U extends {}>(
list: _.List<T>,
properties: U): T;
我想使用 T
作为 properties 参数的类型,因为它已经有了我想要的类型信息,但尝试这样做会导致此 typescript 错误:
Argument of type
'{ one: string; }'
is not assignable to parameter of type'Test'
. Property'two'
is missing in type'{ one: string; }'
.
是否有一些额外的语法可以让我根据需要有效地使 one
和 two
字段可选?类似于以下内容:
_.findWhere<Test, Test?>(TestCollection, {
one: 'name'
});
我想要自动完成功能,当我使用错误的类型信息(例如,提供数字时的字符串)时它会提醒我。
这在语言中存在吗?在这种情况下我是否必须创建一个新类型?我是否需要将所有字段设为可选?
最佳答案
此功能在 TypeScript 中尚不存在。 This is the suggestion issue tracking it.
关于typescript - 如何使用不完整的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39536198/