我的目的很简单:我想找到一种对扩展参数使用泛型的方法,在这个例子中,throwData是我感兴趣的东西.我想用一些更具信息性的东西,比如泛型,而不是any.有没有办法让我做这样的事?

 titleStylesCondition<
    IP extends {
      hasOwnProperty: (a: string) => boolean;
      throwData?: any;
      title?: string;
    }
  >(itemProps: IP) {
    const { palette, isDark } = this.context;
    const styles = getStyles(palette, isDark);
    const titleStyles = this.get("props.titleStyles", {});
    if (
      itemProps.hasOwnProperty("Industry") ||
      itemProps.throwData.hasOwnProperty("Auto") ||
      itemProps.title === "BMW"
    ) {
      return styles.autoStyling;
  }

推荐答案

当然,只需添加另一个泛型来保存其类型:

 titleStylesCondition<
    IP extends {
      hasOwnProperty: (a: string) => boolean;
      throwData?: ThrowData;
      title?: string;
    },
    ThrowData,
  >(itemProps: IP) {

大多数情况下,TypeScript可以正确地推断出这ThrowData个泛型.

Typescript相关问答推荐

带脉轮UI的TypScript支持StyleProps的正确方法是什么?

为什么在TypScript中将类型守护的返回类型写成This is(

等待的R没有用响应对象展开到R

如何为父类构造函数中的修饰属性赋值?

根据另一个属性的值来推断属性的类型

对数组或REST参数中的多个函数的S参数进行类型判断

如何使用WebStorm调试NextJS的TypeScrip服务器端代码?

如何将泛型对象作为返回类型添加到类型脚本中

如何从扩展接口推断泛型?

有没有办法防止类型交集绕过联合类型限制?

我在Angular 17中的environment.ts文件中得到了一个属性端点错误

创建一个TypeScrip对象并基于来自输入对象的约束定义其类型

如何键入派生类的实例方法,以便它调用另一个实例方法?

在Thunk中间件中输入额外参数时Redux工具包的打字脚本错误

接口中可选嵌套属性的类型判断

将类型脚本函数返回类型提取到VSCode中的接口

如何创建一个将嵌套类属性的点表示法生成为字符串文字的类型?

无法使用prisma中的事务更新记录

传入类型参数<;T>;变容函数

Next 13 + React 18 createContext 类型的构建问题