【问题标题】:how to specify type of some variable, so that it could have value property?如何指定某个变量的类型,使其具有值属性?
【发布时间】:2022-11-14 19:13:26
【问题描述】:

我指定该变量可以是字符串和数字,前两个 if-else 情况也可以。但是我在 console.log 行中遇到错误:类型 never 上不存在属性值。

type Num = string | number
const num: Num = 10 as Num

if (typeof num === 'string') {
    num.toLowerCase() // ok
} else if (typeof num === 'number') {
    num.toPrecision(2) // ok
} else {
    console.log(num.value.toLowerCase()) // error
}

我不明白。什么类型应该是 num 才不会出错?我应该使用泛型吗?

【问题讨论】:

  • 如果它有一个value 属性,那么它是什么类型?定义该类型。将该类型用作Num 的一种可能类型。

标签: typescript typeof


【解决方案1】:

错误Property does not exist on type 'never' 发生在我们尝试访问类型为 never 的值的属性时,或者当 TypeScript 在分析我们的代码时感到困惑时。

因为您已经将变量num 的类型定义为Num = string | number,所以它不应包含除stringnumber 之外的任何其他类型。因此, else 语句是多余的,else statement 确实永远不会被评估。

【讨论】:

    猜你喜欢
    • 2020-08-08
    • 2021-01-09
    • 2018-11-30
    • 2014-02-28
    • 1970-01-01
    • 2017-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多