TypeScript-使用函数参数类型作为返回类型的参数(没有泛型)吗?

时间:2020-02-24 14:49:53

标签: typescript

示例:

enum Dimension {
  Margin = 'margin',
  Padding = 'padding',
  Content = 'content',
};

enum MarginStyleKey {
  Top = 'margin-top',
  Left = 'margin-left',
  Bottom = 'margin-bottom',
  Right = 'margin-right',
}

enum PaddingStyleKey {
  Top = 'padding-top',
  Left = 'padding-left',
  Bottom = 'padding-bottom',
  Right = 'padding-right',
}

enum ContentStyleKey {
  Width = 'width',
  Height = 'height',
}

type DimensionStyleKeys = {
  [Dimension.Margin]: MarginStyleKey;
  [Dimension.Padding]: PaddingStyleKey;
  [Dimension.Content]: ContentStyleKey;
}

type DimensionStyles <T extends Dimension> = {
  [styleKey in DimensionStyleKeys[T]]: string;
}

type GetDimension = (dimension: Dimension) => DimensionStyles<dimension>

因此,最后我想根据参数确定函数的类型(因为函数参数的类型和DimensionStyleKeys的键的类型很常见),它可以自动确定函数的返回类型。

当然

type GetDimension <T extends Dimension> = (dimension: T) => DimensionStyles<T>

将解决问题,但我看不出没有在函数类型中使用泛型无法运行的任何原因。

有什么想法吗?

0 个答案:

没有答案