对扩展参数使用 typescript 泛型

Use of typescript generics for extended parametres

我的目的很简单:我想找到一种将泛型用于扩展参数的方法,在这个例子中,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 泛型。