字符串文字的类型

问题描述 投票:0回答:1

当我声明一个常量字符串时,打字稿给出它的文字类型

const x = 'X' // x is of 'X' type

所以我收到以下错误

let y: typeof x = 'Y' // error Type '"Y"' is not assignable to type '"X"'

但是为什么当我在 if 语句或 console.log 中检查它时我得到字符串?

if (typeof x === 'X') console.log('OK') // types '"string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function"' and '"X"' have no overlap
console.log(typeof x) // string

谢谢

typescript
1个回答
1
投票

JavaScript 的运行时

typeof
运算符TypeScript 的类型级别
typeof
运算符
几乎没有关系。

前者可以用于任何值,并且 TypeScript 错误消息已经告诉你它可以在运行时计算出什么结果——一个字符串:

“字符串”| “数字”| “bigint” | “布尔值” | “符号”| “未定义” | “对象”| 「功能」

后者只能用于变量和属性,并在类型检查时计算为类型

只需将它们视为两个具有相同名称的不同运算符,就像 JavaScript 中的

|
是按位或,以及 TypeScript 中类型级别的类型联合。

© www.soinside.com 2019 - 2024. All rights reserved.