javascript - 如何从 Typescript 中的函数参数中删除一些类型检查?
问题描述
我有以下类型:
type test = {
test1: number
test2: number
test3: number
}
和功能
function bla(data: test) {}
现在,这个想法是,无论我bla
从哪里打电话,我都无法传递将拥有的数据test1, test2, test3
,而只能传递test2, test3
. Typescript 会抱怨我没有传递包含所有test1, test2, test3
.
你会如何解决这样的问题?
解决方案
您可以Omit
从对象类型中获取属性:
type OmitTest = Omit<test, "test1">;
这与以下内容相同:
type OmitTest = {
test2: number;
test3: number;
}
或创建一个Partial
以使所有属性可选:
type PartialTest = Partial<test>;
这与以下内容相同:
type PartialTest = {
test1?: number;
test2?: number;
test3?: number;
}
编辑:
您可以使用它创建一个映射的相交类型,Omit
它允许您从原始对象中选择某些属性作为可选:
type PickPartial<
T extends {[key: string]: any},
Keys extends keyof T
> = Omit<T, Keys> & {[K in Keys]?: T[K]};
type PickPartialTest = PickPartial<test, "test1">;
结果如下:
type PickPartialTest = {
test1?: number;
test2: number;
test3: number;
}
这将与来自 object 的任何键的联合一起工作T
。
推荐阅读
- java - Android:如何计算模型数组列表中的总数?
- python - 如何删除 group_by 语句中的列?
- python - 如何在 Beautiful Soup 网页抓取中提取数据值块而不是文本
- html - 页面底部的聊天消息空间
- javascript - 下拉搜索菜单
- soap - 为没有 WSDL 的 SOAP 端点构造请求数据
- python-3.7 - Python3 与 FileMaker 数据使用 pyodbc 没有给出实际的 unicode 值 [法语和匈牙利字符]
- android - Android Build 失败并出现重复的类错误
- mysql - 如何从两个不同的列中选择满足条件的行
- mysql - myodbc-installer 列出数据源,但 iodbctest 显示没有 DSN