![](/img/trans.png)
[英]What is the TypeScript equivalent of "PropTypes.oneOf" (restrict a variable to subset of values)
[英]Typescript equivalent of PropTypes.oneOf, from existing variable
我知道这在“ PropTypes.oneOf”的TypeScript等效项(将变量限制为值的子集)中被问与答,但是我有一种情况,我觉得答案不能解决我的问题然而。
我正在将项目从JavaScript转换为Typescript。 在一个React组件中,导入了一个JSON文件。 组件中的道具之一必须是此JSON的键之一:
import React from "react"
import PropTypes from "prop-types"
import myData from "./myData.json"
const dataKeys = Object.keys(myData)
function MyComponent({myType, ...}) { ... }
MyComponent.propTypes = {
myType: PropTypes.oneOf(dataKeys).isRequired,
...
}
现在,我想将MyComponent转换为Typescript,因此我将删除PropTypes并基于现有propTypes创建一个Props接口。 问题是,我不确定如何转换基于现有变量构建的PropTypes.oneOf
,尤其是依赖于JSON文件导入的变量。 通常,我将使用字符串文字或枚举类型的并集。 在这种情况下,我有什么选择?
是的,我在allowSyntheticDefaultImports
启用了tsconfig.json
。
假设iconNames
是一个数组,此StackOverflow答案应有帮助: Typescript从元组/数组值中获取联合类型。
基本上,当您定义iconNames
,请同时定义类型:
const iconNames = ['plus', 'arrow', 'trash'] as const;
type IconNamesType = typeof iconNames[number];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.