1. 什么是TypeScript的静态类型?
静态数据类型(Static Typing),通俗的理解就是,一旦变量定义成某种类型,就无法改变。这里的无法改变指的是无法改变变量的类型,而不是变量具体的值。
通过一个小例子,便于理解:
如上图所示,这里定义了一个变量age,它的类型是
number型,变量值为18,我可以通过赋值的方式改变age的值,这样不会报错。
但如果我要给age赋值一个字符串,就会出现如下报错:
原因是:我将
string型数据’xiaoming’强行赋值给了
number型变量age。由此可见,一旦变量定义成某种静态类型,就无法改变。
在 TypeScript 中静态类型分为两种,一种是基础静态类型,一种是对象类型。下面将一一讲解。
2. TypeScript 的基础静态类型
基础静态类型包括:number
,string
,null
,undefinde
,symbol
,boolean
,void
。
基础静态类型的定义如下:
let age : number = 18;
let name : string = "xiaoming"
注意:当变量的类型定义好之后,该变量就可以调用该类型上所有的属性和方法!!!如上图所示,变量age定义为
number
型,age可以调用number类型的所有属性和方法。
3. TypeScript 的对象类型
TypeScript 的对象类型又分为以下几种:
- 对象类型
- 数组类型
- 类类型
- 函数类型
3.1 对象类型
对象类型定义如下:
// 对象类型
const teacher: {
name: string,
age: number
} = {
name: 'wanglaoshi',
age: 28
}
console.log(teacher.name)
在终端通过执行 ts-node 文件名
就可以显示执行结果:wanglaoshi
3.2 数组类型
数组类型定义如下:
// 数组类型
const arrStr: String[] = ["xiaohong", "xiaoming", 'xiaohua'];
console.log(arrStr)
这里变量arrStr定义的类型是string
,整个数组里面的值都必须是执行结果为:[ 'xiaohong', 'xiaoming', 'xiaohua' ]
3.3 类类型
类类型定义如下:
// 类类型
class Person {}
const xiaohong: Person = new Person()
先定义一个Person
类,再定义xiaohong
,xiaohong
必须是一个Person
类对应的对象才可以。
注意:这里定义的
xiaohong
可以直接调用Person
类中的函数方法
class Person {
name: string
constructor(name: string) { //构造函数,实例化时触发的方法
this.name = name
}
run(): void {
console.log(this.name)
}
}
const xiaohong: Person = new Person('xiaohong')
xiaohong.run()
这里xiaohong
可以调用Person
类中的run()
函数。输出结果为:xiaohong
3.4 函数类型
函数类型定义如下:
// 函数类型
function fun(name:string): string {return name}
const person: string = fun('xiaohong')
console.log(person);
先定义一个fun()
函数,类型为string
,然后定义一个函数类型变量person
,其参数类型就只能是string
,换成其他类型则会报错。最后结果为:xiaohong
这里简要的介绍了一下 TypeScript 的静态类型,后续将介绍 TypeScript 的类型注解和类型推断