一:TypeScript ==> JavaScript
$ tsc app.ts
运行上面命令之后 当前文件下就会多一个app.js文件
二:基本类型
1 any
any:任意类型 声明为any的变量开源赋予任意类型的值
let obj:any = 123
let obj:any = {name:'123'}
2 number
number:数字类型 number类型用来表示整数和分数
let binaryLiteral: number = 0b1010; // 二进制
let octalLiteral: number = 0o744; // 八进制
let decLiteral: number = 6; // 十进制
let hexLiteral: number = 0xf00d; // 十六进制
3 string
string: 字符串系列 可用单引号(' ') 或者双引号(" ") 或者模板字符串(反引号 ` `)
let blogName: string = 'superTiger' // 单引号
let knowledge: string = "study typeScript" // 双引号
let todoWhat: string = `${blogName} is studying typeScript` // 模板字符串
4 boolean
boolean: 逻辑值true 或者 false
let isStudy: boolean = true
let isWorking: boolean = false
5 数组array
数组: 类似于列表的高阶对象
两种声明方式:
let arr: string[] = ['blog', 'CSDN']; // []方式
let arr1: number[] = [1, 2, 3];
let arr2: Array<number> = [1, 2, 3]; // 数组泛型方式
let arr3: Array<string> = ['1', '2', '3'];
6 元组Tuple
元组:表示已知元素数量和类型的数组,各元素的类型不必相同,对应位置的类型需要相同
let arr:[string,number] = ['1',2] // 正确方式
let objArr: [number[],string[]] = [[1,2,3],['1','2']] // 正确
let arr:[string] = ['1',2] // 错误 元素数量不一致
let arr:[string,string] = [2,2] // 错误 元素类型不一样
7 枚举enum
enum:用于定义数值集合
enum Color {Red,Green,Blue}
let c:Color = Color.Red
console.log(c) // 输出0
默认情况下,从0
开始为元素编号。 你也可以手动的指定成员的数值。 例如:
enum Color {Red=1,Green,Blue}
let c:Color = Color.Green
console.log(c) // 输出2
输出:
通过值查找名字
enum Color {Red = 1, Green, Blue}
let colorName: string = Color[2];
console.log(colorName); // 输出'Green'
8 void
void: 表示该方法没有返回值。
function sayhello: void {
alert('Hello ts')
}
9 null 和 undefined
null: 表示对象缺失
undefined: 用来初始化一个未定义的值
let n: null = null
let u: undefined = undefined
TypeScript 里,undefined
和 null
两者各自有自己的类型分别叫做 undefined
和 null
。 它们的本身的类型用处不是很大 ;
默认情况下 null
和 undefined
是所有类型的子类型。 就是说你可以把 null
和 undefined
赋值给 number
类型的变量。
10 any
any: 表示任意类型
我们不希望类型检查器对这些值进行检查而是直接让它们通过编译阶段的检查。 那么我们可以使用 any
类型来标记这些变量
let test: any = 22
test = {name:'superTiger'}
test = false
12 object
object:非原始类型
除number
,string
,boolean
,symbol
,null
或undefined
之外的类型都可以用object来表示
function fn(obj: object): object {
console.log('obj:', obj);
return {};
}
console.log(fn(new String('superTiger')));
13 never
never:
表示的是那些永不存在的值的类型
// 返回never的函数必须存在无法达到的终点
function error(message: string): never {
throw new Error(message);
}
// 返回never的函数必须存在无法达到的终点
function infiniteLoop(): never {
while (true) {
}
}
14 联合类型 Union Types
Union Types:取值可以为多种类型中的一种 声明时用 | 隔开
let test: string | number = 123;
test = 'superTiger';
console.log(test);
test = 666;
console.log(test);
访问联合类型的属性或方法:
只能访问联合类型中所有类型共有的属性或者方法
// 报错 Property 'length' does not exist on type 'number'
// number类型是没有'length'属性的
function getLength(something: string | number): number {
return something.length;
}
// 正确 string类型和number类型都有toString()方法
function getString(something: string | number): string {
return something.toString();
}