typescript - TypeScript 中的“:”是什么意思?
问题描述
我知道打字稿/javascript,但有使用 python/java/c++ 的经验。这是否像新版本 Python 中的类型提示?“:”是否总是意味着类型提示或者它也可以意味着其他东西?
解决方案
TypeScript 是 ECMAScript 的超集,所以首先,冒号:
在 ECMAScript 中具有相同的含义:
- 它是条件运算符
condition ? consequence1 : consequence2
的语法的一部分,它condition
根据其真实性计算一个consequence1
或consequence2
(但从不计算两者),整个表达式的值是被评估的结果的值。 - 它是对象字面量语法的一部分:
const obj = { foo: 4, "bar": 8, ["ba" + "z"]: 15, } console.log(obj);
- 它是一个赋值属性,是解构赋值语法的一部分:
const obj = { foo: 16, bar: 23, baz: 42, } const { foo: frotz, baz: quux } = obj; console.log(frotz, quux);
- 它是label语法的一部分:
someLabel: for (let i = 0; i < 2; i++) { for (let j = 100; j < 102; j++) { console.log({ i, j }); continue someLabel; } }
但它在 TypeScript 中也有其他含义,用于类型注释:
const i: number = 4711;
const s: string = "Hello";
function f(a: number, b: string): never
请注意,这些不是“类型提示”。它们是类型注释。他们没有暗示任何事情,他们被严格执行。
推荐阅读
- ecmascript-6 - ES6 解构导入并应用“as”
- xamarin.forms - 从 Xamarin 表单中的另一个页面访问特定的 Shell FlyoutItem
- sql-server - 将分区切换到外部表
- swift - 协议继承 Swift
- python - django ORM 在外键上加入两个模型
- python - 如何将以下三角函数转换为python函数进行边界曲率计算?
- javascript - 在仅使用 JavaScript ES6 的浏览器中从诸如tippyjs 之类的包中导入/导出模块
- angular - 我如何解构指向全局常量的对象?
- php - Laravel 8在应用程序/模型中更改用户表名,受保护不起作用
- excel - 具有多个条件的 Sumif