typescript设置默认值_一文学懂 TypeScript 的类型

你将学到什么

阅读本文后,你应该能够理解以下代码的含义:

interface Array { concat(...items: Array): T[]; reduce( callback: (state: U, element: T, index: number, array: T[]) => U, firstState?: U): U; ···}

如果你认为这段代码非常神秘 —— 那么我同意你的意见。但是(我希望证明)这些符号还是相对容易学习的。一旦你能理解它们,就能马上全面、精确的理解这种代码,从而无需再去阅读冗长的英文说明。

运行代码案例

TypeScript 有一个在线运行环境。为了得到最全面的信息,你应该在 “Options” 菜单中打开所有选项开关。这相当于在 --strict 模式下运行TypeScript编译器。

关于类型检查的详细说明

我在用 TypeScript 时总是喜欢打开 --strict 开关设置。没有它,程序可能会稍微好写一点,但是你也失去了静态类型检查的好处。目前此设置能够开启以下子设置:

  • --noImplicitAny:如果 TypeScript 无法推断类型,则必须指定它。这主要用于函数和方法的参数:使用此设置,你必须对它们进行注释。
  • --noImplicitThis:如果 this 的类型不清楚则会给出提示信息。
  • --alwaysStrict:尽可能使用 JavaScript 的严格模式。
  • --strictNullChecks:null 不属于任何类型(除了它自己的类型,null),如果它是可接受的值,则必须明确指定。
  • --strictFunctionTypes:对函数类型更加严格的检查。
  • --strictPropertyInitialization:如果属性的值不能是 undefined ,那么它必须在构造函数中进行初始化。

更多信息:TypeScript 手册中的“编译器选项”一章。

类型

在本文中,我们把类型看作是一组值的集合。 JavaScript 语言(不是TypeScript!)有7种类型:

  • Undefined:具有唯一元素 undefined 的集合。
  • Null:具有唯一元素“null”的集合。
  • Boolean:具有两个元素 false 和 true 的集合。
  • Number:所有数字的集合。
  • String:所有字符串的集合。
  • Symbol:所有符号的集合。
  • Object:所有对象的集合(包括函数和数组)。

所有这些类型都是 dynamic:可以用在运行时。

TypeScript 为 JavaScript 带来了额外的层:静态类型。这些仅在编译或类型检查源代码时存在。每个存储位置(变量或属性)都有一个静态类型,用于预测其动态值。类型检查可确保这些预测能够实现。还有很多可以进行 静态 检查(不运行代码)的东西。例如,如果函数 f(x) 的参数 x 是静态类型 number,则函数调用 f('abc') 是非法的,因为参数 'abc' 是错误的静态类型。

类型注释

变量名后的冒号开始 类型注释:冒号后的类型签名用来描述变量可以接受的值。例如以代码告诉 TypeScript 变量 “x” 只能存储数字:

let x: number;

你可能想知道用 undefined 去初始化 x 是不是违反了静态类型。 TypeScript 不会允许这种情况出现,因为在为它赋值之前不允许操作 x。

类型推断

即使在 TypeScript 中每个存储位置都有静态类型,你也不必总是明确的去指定它。 TypeScript 通常可以对它的类型进行推断。例如如果你写下这行代码:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值