【问题标题】:Flow: make a key from an imported object type optional流程:将导入的对象类型中的键设为可选
【发布时间】:2018-02-18 01:22:22
【问题描述】:

我想从外部模块导入一个随机对象并使用它们的流类型:

export type randomType = {
    a: string,
    b: boolean
}

我想将 randomType 导入我的库,但我想将 b 设为可选

import { randomType } from 'randomModule';
// pseudo flow code:
type shrinkedRandomType = randomType - {b: boolean}
// How can I make this in flow so it equals this?
type shrinkedRandomType = {
    a: string,
    b?: boolean
}
// or even 
type shrinkedRandomType = {
    a: string
}

【问题讨论】:

    标签: javascript flowtype


    【解决方案1】:

    传播运算符来救援!

    如果您不熟悉扩展运算符,look it up on MDN

    否则,方法如下:

    type randomType = {
        a: string,
        b: boolean
    }
    
    type shrinkedRandomType = {
        ...randomType,
        b?: boolean
    }
    
    // Perfectly valid
    let test:shrinkedRandomType = {
     a: "Hi"
    }
    

    【讨论】:

    • 您好,很抱歉,但它不能按我想要的方式工作。 let test:shrinkedRandomType = { a: "Hi" } 是否有效并不重要。我希望 {a:"hi", b:"hello"} 无效
    • 那你还关心什么?
    • 我希望 {a:"hi", b:"hello"} 在没有从头开始创建新类型的情况下无效
    • 我明白了。将其更改为 b?: undefined then
    猜你喜欢
    • 2016-09-07
    • 2012-12-31
    • 2019-05-07
    • 1970-01-01
    • 2021-02-19
    • 1970-01-01
    • 1970-01-01
    • 2021-04-13
    • 1970-01-01
    相关资源
    最近更新 更多