跳到主要内容

基础类型

基础类型

  • any :任意类型,声明为 any 的变量可以赋予任意类型的值。
  • number :数字类型,双精度 64 位浮点值。它可以用来表示整数和分数。
let binaryLiteral: number = 0b1010 // 二进制
let octalLiteral: number = 0o744 // 八进制
let decLiteral: number = 6 // 十进制
let hexLiteral: number = 0xf00d // 十六进制
  • string :字符串类型,一个字符系列,使用单引号(')或双引号(")来表示字符串类型。
  • 反引号(`)来定义多行文本和内嵌表达式。
let name: string = 'Runoob'
let years: number = 5
let words: string = `您好,今年是 ${name} 发布 ${years + 1} 周年`
  • boolean :布尔类型,表示逻辑值:true 和 false。
let flag: boolean = true
  • 数组类型 :声明变量为数组。
// 在元素类型后面加上[]
let arr: number[] = [1, 2]

// 或者使用数组泛型
let arr: Array<number> = [1, 2]
  • 元组 : 元组类型用来表示已知元素数量和类型的数组,各元素的类型不必相同,对应位置的类型需要相同。
let x: [string, number]
x = ['Runoob', 1] // 运行正常
x = [1, 'Runoob'] // 报错
console.log(x[0]) // 输出 Runoob
  • enum:枚举,枚举类型用于定义数值集合。
enum Color {Red, Green, Blue};
let c: Color = Color.Blue;
console.log(c); // 输出 2
  • void:用于标识方法返回值的类型,表示该方法没有返回值。
function hello(): void {
alert('Hello Runoob')
}
  • null:表示对象值缺失。
  • undefined:用于初始化变量为一个未定义的值。
  • never:是其它类型(包括 null 和 undefined)的子类型,代表从不会出现的值。

TypeScript 遵循强类型

  • TypeScript 遵循强类型,如果将不同的类型赋值给变量会编译错误,如下实例:
var num: number = 'hello' // 这个代码会编译错误

类型断言(Type Assertion)

  • 类型断言可以用来手动指定一个值的类型,即允许变量从一种类型更改为另一种类型。
  • 语法格式:<类型> 值或: 值 as 类型
var str = '1'
var str2: number = <number>(<any>str) //str、str2 是 string 类型
console.log(str2)

类型推断

  • 当类型没有给出时,TypeScript 编译器利用类型推断来推断类型。
  • 如果由于缺乏声明而不能推断出类型,那么它的类型被视作默认的动态 any 类型。
var num = 2 // 类型推断为 number
console.log('num 变量的值为 ' + num)
num = '12' // 编译错误
console.log(num)

变量作用域

  • 变量作用域指定了变量定义的位置。
  • 程序中变量的可用性由变量作用域决定。
  • TypeScript 有以下几种作用域:
  • 全局作用域 − 全局变量定义在程序结构的外部,它可以在你代码的任何位置使用。
  • 类作用域 − 这个变量也可以称为 字段。类变量声明在一个类里头,但在类的方法外面。该变量可以通过类的对象来访问。类变量也可以是静态的,静态的变量可以通过类名直接访问。
  • 局部作用域 − 局部变量,局部变量只能在声明它的一个代码块(如:方法)中使用。
ts代码
var global_num = 12 // 全局变量
class Numbers {
num_val = 13 // 实例变量
static sval = 10 // 静态变量

storeNum(): void {
var local_num = 14 // 局部变量
}
}
console.log('全局变量为: ' + global_num)
console.log(Numbers.sval) // 静态变量
var obj = new Numbers()
console.log('实例变量: ' + obj.num_val)
编译后的js代码
var global_num = 12 // 全局变量
var Numbers = /** @class */ (function () {
function Numbers() {
this.num_val = 13 // 实例变量
}
Numbers.prototype.storeNum = function () {
var local_num = 14 // 局部变量
}
Numbers.sval = 10 // 静态变量
return Numbers
})()
console.log('全局变量为: ' + global_num)
console.log(Numbers.sval) // 静态变量
var obj = new Numbers()
console.log('实例变量: ' + obj.num_val)

// 全局变量为: 12
// 10
// 实例变量: 13

typeof 类型运算符

  • typeof 是一元运算符,返回操作数的数据类型。
var num = 12
console.log(typeof num) //输出结果: number

instanceof 运算符

  • instanceof 运算符用于判断对象是否为指定的类型。
class Person {}
var obj = new Person()
var isPerson = obj instanceof Person
console.log('obj 对象是 Person 类实例化来的吗? ' + isPerson)