我遇到的情况是,我有一个函数期望类型为T
的对象,但不包括T
的某些属性。
我设法创建了一个从K
排除特定属性T
的类型,而没有问题(以下解释:Exclude property from type)
现在,我的问题是Typescript不会在预期的情况下给我键入错误,在某些情况下,我仍然可以传递带有属性K
的对象,该对象应排除在外。
我将提供一个小场景来说明:
采用以下类型和给定的接口:
export type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>
export type DataExclude<T, K extends keyof T> = Partial<Omit<T, K>>
export interface Data {
ID: number,
payload: any,
size: number,
}
现在说我想要一个函数,其参数类型为Data
,但不包括"ID"
,我可以这样写:
printDataPartial(partialData: DataExclude<Data,"ID">){
console.log(partialData)
}
现在,我希望该函数从Data
中获取具有"ID"
以外的任何属性的对象(并且不必是每个属性,因此{{ 1}}类型)。但是它不会接受Partial<>
作为属性
以下是一些用例:
DataExclude
我也做了Stackblitz以便进行测试。
简而言之,我想知道如果提供的函数参数的属性中包含ID
,并且我想使用类型,是否有办法在编辑器中显示类型错误?安全地这样做,而不仅仅是手动遍历给定参数的每个属性。