我有一个使用 typescript 的 react 应用程序,我需要使用带插值的文字字符串类型创建类型:
class ExampleClass {
product_id!: number;
product_name!: string;
}
export type HeaderClassNames<N extends string> = `theader_${Lowercase<N>}`;
type HeaderClasses = HeaderClassNames<keyof ExampleClass>;
“HeaderClasses”产生:
type HeaderClasses = "theader_product_id" | "theader_product_name"
tsc 可以正常工作,但是当 babel 转译时,它无法识别模板:
Unexpected token (8:72)
6 |
7 | export type TableHeaderConfig<Keys extends string> = Record<Keys, TableHeaderColumn>;
> 8 | export type HeaderClassNames<N extends string> = `theader_${Lowercase<N>}`;
| ^
9 | export type ColumnClassNames<N extends string> = `column_${Lowercase<N>}`;
10 |
Babel said 它开始支持这个功能,但我安装并重新安装了 babel/core,甚至手动尝试了 babel/parser(提交的地方)但没有任何变化。
感谢您的帮助。
答案 0 :(得分:0)
经过大量挖掘,我发现使用的 babel 版本是 react-app-rewired 和 react-scripts 包中的版本。几个小时后,你的头就不再工作了。
我更新了它们,一切正常。
感谢所有花一分钟时间提供帮助的人。