You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何为函数参数添加类型注解以限定其为指定接口的键?

实现方式:用TypeScript的keyof操作符限定参数类型

当然可以实现这个类型限定!借助TypeScript的keyof操作符,你能把err参数的类型严格约束为IProductError接口的键值,避免传入无效的字符串。

修改后的完整代码

export interface IProductError { 
  isPriceError: boolean; 
  isAmountError: boolean; 
  isDescriptionError: boolean; 
}

export const getCreateProductsError = (index: number, err: keyof IProductError) => 
  createSelector( 
    getCreateFeatureState, 
    state => state.productsError.getIn([index, err]) 
  );

原理说明

  • keyof IProductError会生成一个联合类型"isPriceError" | "isAmountError" | "isDescriptionError",这正是你接口里的所有键名。
  • 现在当你调用getCreateProductsError时,TypeScript会自动提示合法的err选项,如果你传入比如"invalidError"这类不在接口里的字符串,编译阶段就会直接报错,大大提升了代码的类型安全性。

这样调整后,既保留了函数的功能,又实现了你想要的类型注解约束。

内容的提问来源于stack exchange,提问作者Noah Bergh

火山引擎 最新活动