繁体   English   中英

相当于PropTypes.oneOf的打字稿,来自现有变量

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM