【问题标题】:Recognition of types in typescript打字稿中类型的识别
【发布时间】:2023-01-11 16:49:17
【问题描述】:

我在为常量定义值时遇到了问题。尽管指定了类型,但 Typescript 不会抛出错误,我认为它应该抛出错误。我准备了一个代码来展示我的问题。 我认为第 14 行应该报告为错误,因为缺少“valueN”属性。

//example
type TT = string | {string_:'S', valueS:string} | {number_:'N', valueN:number};

function run(p:TT):number{
    if(typeof p === 'string'){
        throw '';
    }
    if('number_' in p){
        return p.valueN;
    }
    throw '';
}

const C:TT = {number_:'N',string_:'S',valueS:'text'};

console.log(run(C));

Playground

有人可以向我解释为什么 TS 会这样吗,以及如何改进代码以便第 14 行报告缺少属性的错误。

【问题讨论】:

    标签: typescript


    【解决方案1】:

    const C 与 TT 兼容,因为它适合联合类型 TT 中的类型 {string_:'S', valueS:string} 以及额外的属性 number_:'N'。允许额外的属性,所以没有错误。也许您需要像受歧视的工会之类的东西来处理您的案件?

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-13
    • 2020-06-12
    • 2019-11-15
    • 2022-11-25
    • 2023-03-26
    • 2022-09-24
    • 2017-03-09
    相关资源
    最近更新 更多