typescript - 如何使用不完整的类型

标签 typescript intellisense typescript-typings

如果不创建新的接口(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; }'.

是否有一些额外的语法可以让我根据需要有效地使 onetwo 字段可选?类似于以下内容:

_.findWhere<Test, Test?>(TestCollection, {
    one: 'name'
});

我想要自动完成功能,当我使用错误的类型信息(例如,提供数字时的字符串)时它会提醒我。

这在语言中存在吗?在这种情况下我是否必须创建一个新类型?我是否需要将所有字段设为可选?

最佳答案

此功能在 TypeScript 中尚不存在。 This is the suggestion issue tracking it.

关于typescript - 如何使用不完整的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39536198/

相关文章:

javascript - 参数用于过滤数组的属性

javascript - Typescript 强类型键值对声明

typescript - 如何在 Typescript 中索引特定数组元素?

asp.net-mvc-3 - MVC 3 Razor 智能感知

用于MSBuild社区任务的Intellisense不起作用

intellij-idea - Intellij Idea 13 终极性能缓慢,打字时滞后

TypeScript:如何设置解构对象的类型?

typescript - react 导航 + TypeScript 错误 : Type 'EventStackParams' does not satisfy the constraint 'Record<string, object | undefined>'

jquery - 初始化器类型 JQuery<TElement> 不可分配给变量类型 JQuery

javascript - 'string' 类型的参数不可分配给 'AbstractControl' 类型的参数。 Angular react 形式