首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为联合中的不同类型构造不同的默认值?

为联合中的不同类型构造不同的默认值?
EN

Stack Overflow用户
提问于 2020-09-16 23:50:14
回答 1查看 15关注 0票数 0

我有一个像这样的带标签的联盟

代码语言:javascript
复制
type FieldValue = 
   | { type: “multiple-choice”, content: string[] }
   | { type: “text”, content: string }

我想要有一个“智能结构”功能

代码语言:javascript
复制
function default<T extends FieldValue>(): T {
    ...
}

它将返回以下两个参数之一

代码语言:javascript
复制
{ type: “multiple-choice”, content: [] }

代码语言:javascript
复制
{ type: “text”, content: “” }

基于类型T。现在,我知道我不能在运行时访问泛型类型,但也许有一种更好的方法来实现这一点(接口?条件类型?类?)。

有什么方法可以省去我自己手工编写defaultText和defaultMultipleChoice的工作吗?

EN

回答 1

Stack Overflow用户

发布于 2020-09-17 00:04:22

也许你可以换个方式,看看这是否有帮助:

代码语言:javascript
复制
const MultipleChoice = {
  type: 'multiple-choice' as const,
  content: [] as string[]
}

const SingleChoice = {
  type: 'text' as const,
  content: ''
}

type MultipleChoice = typeof MultipleChoice
type SingleChoice = typeof SingleChoice

type FieldValue = MultipleChoice | SingleChoice
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63923701

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档