首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

TypeScript 旅途1:基础类型

相信你在写JavaScript代码的时候也碰到过很头疼的时刻,比如对象的属性名或方法名大小写错了,或是记不得某个对象有没有某个属性,害怕最新的ES标准有的浏览器还没有支持…等等种种问题,那么你需要使用TypeScript,你会爱上她的('')。

TypeScript是JavaScript的超级,她是静态类型检查的

这就意味着,你的变量、函数参数、返回值等等都是确定类型的,当你试图使用不兼容的类型,那么你的开发工具会提示你错误,并且拒绝给你编译。

开发工具智能提示

主流的开发工具都支持TypeScript,智能提示会让你感觉像是在使用Idea来写Java代码一样的享受。

方便的代码重构

面向对象与接口编程,拥有非常清晰的代码结构,可读性大大提高。

容易上手,初次接触,也能看懂

高度兼容原生脚本语法,对语法的破坏性较少,即使没接触过的人,也能很快上手,初次阅读也没有什么障碍。

本着解决JavaScript的糟糕之处,这注定是个不平凡的开源项目。

Phaser、Cocos2dx、laybox、白鹭等等游戏引擎都有TS版本。更多的使用TypeScript的开源项目可以参考这里https://github.com/brookshi/awesome-typescript-projects。

关于开发环境搭建与调试配置可以参考这里https://segmentfault.com/a/1190000011935122。

下面正式介绍TypeScript的基础类型,无论学习一门什么语言,从基础类型开始都再合适不过了。

先介绍两个关键字let和const

let定义的变量不会像var定义的变量那样污染全局环境。

const定义一个对象的时候,可以修改对象的属性值,但是不能修改对象引用。

布尔类型

类型名boolean定义一个布尔类型,值为true或false。如果不写类型名,则会自动推断出类型。

数字类型

关键字number定义一个数字类型,值可以是二进制(0b开头)、八进制(0o开头)、十进制、十六进制(0x开头)。

字符串

关键字string定义一个字符串变量。

使用``定义一个多行字符串(可以带有表达式$)。

数组

类型名称[]定义一个指定类型的数组。

Array同样定义一个指定类型的数组。

元组 Tuple

[类型名、类型名…]定义一个元组,一个元组里可以包含几个不同类型的变量。

枚举

非常有用的一种类型。关键字enum name定义一个枚举。默认情况下,从0开始为元素编号,可以手动设置一个数字编号,后面没有设置编号的会依次往上叠加。

测试发现同样可以把编号设置成字符串等其它类型的值,如enum Color,只是每个元素的编号都要手动设置。

有了枚举就可以把同类型但是互斥的变量定义成一个枚举,而不用定义成一些变量了(比如描述一个音量开关按钮的开关状态等等)。

Any

虽然是强类型的,但是有了any就有了自由。一个定义为any类型的变量,在使用的过程中可以改变它的值类型,甚至可以调用它的方法,但是需要小心,如果没有这个方法,会出异常。

Void

某种程度上来说,void类型像是与any类型相反,它表示没有任何类型。比如定义一个方法没有返回值。

声明一个void类型的变量没有什么大用,因为你只能为它赋予undefined和null。

Null 和 Undefined

void相似,它们的本身的类型用处不是很大。

默认情况下nullundefined是所有类型的子类型。 就是说你可以把nullundefined赋值给其它类型(比如numberstring等等)的变量。

Never

同样是一个没什么用的类型。never类型表示的是那些永不存在的值的类型。 例如,never类型是那些总是会抛出异常或根本就不会有返回值的函数表达式或Lambda表达式的返回值类型。

类型断言

当我确定某个变量是什么类型的时候可以使用类型断言,明确告诉编译器我知道它是什么类型。类型断言使用y as string或者y两种方式都行。

九层之台,起于垒土,千里之行,始于足下。有了类型基础,就可以对TypeScript进行下一步的观光学习了。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180126G17RCP00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券