[英]How to remove some type checks from a function parameter in Typescript?
我有以下类型:
type test = {
test1: number
test2: number
test3: number
}
和 function
function bla(data: test) {}
现在,这个想法是,无论我从哪里调用bla
,我都无法传递将具有test1, test2, test3
的数据,而只有test2, test3
。 Typescript 会抱怨我没有通过包含所有test1, test2, test3
的数据。
你会如何解决这样的问题?
您可以Omit
object 类型的属性:
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
创建一个映射的相交类型,它允许您从原始 object 中选择某些属性作为可选:
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
的任何键的联合一起使用。
您可以像这样将test1
属性设为可选:
type test = {
test1?: number
test2: number
test3: number
}
据我了解您的问题,您需要覆盖外部库中的类型。
然后在你的src
文件夹中创建一个custom-typings.d.ts
文件并像这样填充它:
type test = {
test1?: number
test2: number
test3: number
}
// let's say you use import { bla } from 'your-exact-library-name';
declare module 'your-exact-library-name' {
declare function bla(data: test): any;
}
之后,您将能够使用您自己的类型调用 function。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.