【问题标题】:Flow: Create types from existing types as string literals流程:从现有类型创建类型作为字符串文字
【发布时间】:2021-06-14 19:19:13
【问题描述】:

我的代码 sn-p 与 TS 中的预期完全相同,但在 flow 中出现错误。有没有办法在flow 中实现同样的目标?

type field = 'me' | 'you'
type fieldWithKeyword = `${field}.keyword` //errors out in flow
const appendKeyword = (val:field): fieldWithKeyword => {
    return `${val}.keyword`
}
appendKeyword('me') // works in TS

目的是创建两种类型,fieldfieldWithKeywordfieldWithKeyword 应该接受 ${field}.keyword 形式的值 (在本例中,'me.keyword''you.keyword'fieldWithKeyword 可以接受的预期值)

【问题讨论】:

    标签: typescript flowtype


    【解决方案1】:

    我真的不认为这样的事情在 Flow 中是可能的。

    从您的示例中,您可以这样做:

    type field = 'me' | 'you'
    type fieldWithKeyword = 'me.keyword'|'you.keyword' //errors out in flow
    const appendKeyword = (val:field): fieldWithKeyword => {
        return 'me'? 'me.keyword' :'you.keyword';
    }
    appendKeyword('me')
    

    但我猜你想要一些更动态的东西,你不必硬编码每个字符串。

    【讨论】:

    • 我可以做到,但它有点过分了。我有大量的字段,我希望避免冗余?
    • 您如何使用fieldWithKeyword 字符串?根据您的使用情况,您可以创建一个对象
    • 我从一个常量对象中提取它们,比如field[fieldName],我希望能够说出返回${field[fieldName]}.keywordappendKeyword(field[fieldName]),并且能够输入这个。
    • 我的问题更多是关于你用${field[fieldName]}.keyword做什么
    • 我正在用它进行 API 调用??‍♂️
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-06
    • 1970-01-01
    • 1970-01-01
    • 2011-06-23
    • 2021-08-10
    • 1970-01-01
    相关资源
    最近更新 更多