示例:
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>
将解决问题,但我看不出没有在函数类型中使用泛型无法运行的任何原因。
有什么想法吗?