首页 > 解决方案 > 使用打字稿模板文字类型反应 PropTypes

问题描述

Typescript 4.1 允许使用可用于模拟简单正则表达式模式的模板文字类型,因此我可以断言某些类型的字符串而不是任何字符串。

假设我有以下类型:

type percentStr = `${number}%`;
type relativeOrAbsStr = number | `${number | percentStr}${number | ''}`;

可以是一个数字、一个数字字符串,后跟 % 以及可选的另一个数字:

示例 ok: 33(number), '33%', '10%330','500%30'
示例错误: '23'(string-number not 其次是 %)

但是 - 如果尝试使用 PT.string 作为选项,PropTypes 会抱怨,因为这种类型不能是任何字符串,它应该是特定形状的字符串。

import PT from 'prop-types';
type myStr:relativeOrAbsStr = PT.oneOfType([PT.string, PT.number])
// Type 'string' is not assignable to type 'relativeOrAbsStr'.

目前,作为一种解决方法,我使用as any断言:

type myStr:myStr:relativeOrAbsStr = PT.oneOfType([PT.string as any, PT.number]),

如何为我的模板字符串文字类型定义适当的 prop-types 类型?

标签: typescriptreact-proptypes

解决方案


推荐阅读