Boolean布尔值
最基础的的数据类型 true/false
let judge: boolean = false
Number数字类型
和js一样,ts里的数字包含两种 浮点数number和长整数bigint,支持多种进制
let decLiteral: number = 6
let hex: number = 0xf00d
let binary: number = 0b1010
let octal: number = 0o744
let bigNumber: bigint = 100n
tip: 010 - 05 = ?
String字符串
使用string表示文本数据类型,也可以使用双引号("")、单引号('')、反引号(``)
let name: string = "Hugo"
name = "Albert"
let fullname = `${name} Anna`
Array数组
ts像js一样可以操作数组元素,有两种方式可以定义数组,可以直接在元素类型后面接上[],表示由此元素组成的一个数组,也可以使用数组泛型
let list: number[] = [1, 2, 3]
let list: Array<number> = [4, 5, 6]
tip: []+1 , []++ , []+=1 各是什么结果
Enum枚举
枚举类型是对js标准数据类型的一个补充,默认从0开始编号,也可以手动指定成员的数值,除了通过枚举获得枚举的值,也可以通过值查到枚举
enum Color {Yellow, Green = 2, Red}
let c: Color = Color.Green
let name: string = Color[2]
Void无返回值
void表示函数没有返回值,只能赋予null(在--strictNullChecks未指定时)和undefined
function test(): void {
console.log("test no return")
}
let unusable: void = null
Null和Undefined
ts中,undefined和null两者各自有自己的类型undefined和null,默认情况下null和undefined是所有类型的子类型, 当指定了--strictNullChecks标记,null和undefined只能赋值给它们各自的类型(undefined可以赋值给void类型)
let u: undefined = undefined
let u: null = null
Never永不存在的值
never类型表示那些永不存在的值的类型,never类型是那些总是会跑出异常或根本就不会有返回值的函数表达式或箭头函数表达式的返回值类型,变量也可能是never,当他们被永不为真的类型保护所约束时,never类型时任何类型的子类型,也可以赋值给任何类型
function error(message: string) never {
throw new Error(message)
}
//推断的返回值类型为never
function fail(){
return error("something error")
}
Object对象
object表示非原始类型,基本类型之外的类型,使用object可以更好的表示像Object.create这样的API
decalre function create(o: object | null): void;
create({prop: 0})
create(null)
// Error - 基本类型
create(42)
create("String")
craete(false)
create(undefined)
Tuple元组类型
元祖类型允许表示一个已知元素数量和类型的数组,各元素的类型不必相同,也可以通过访问已知索引的元素来得到正确的类型
// Declare a typle type
let x: [string, number];
// Initialize it
x = ['hugo', 20] // OK
x = [20, 'hugo'] // Error
// 通过索引访问
x[0].substr(1) // OK
x[1].substr(1) // Error, 'number' does not have 'substr'
// 越界访问
x[3] = 'message' // Error, Property '3' does exist on type '[string, number]'
Any
不清楚类型的变量为某一个类型 - 动态内容,比如用户输入或者来自第三方,这种情况下,我们不希望类型检查器对这些值进行检查而直接通过编译,就可以通过any类型来标记这些变量
let notSure: any = 4
notSure = 'string text'
notSure = false
// 当你只知道一部分数据类型的时候,也可使用any
let list: any[] = [1, 2, 'name', false]
list[1] = null