TypeScript --笔记
一、TypeScript开发环境
1、Node.js下载安装
2、Npm全局安装TypeScript
- npm i -g typescript
- tsc
3、创建Ts文件
- demo.ts
4、使用tsc 对 ts文件编译
- 打开对应demo.ts文件路径的cmd窗口
- tsc demo.ts
二、基本类型
1、类型声明
-
字面量
//1、字面量,同时可以使用 | 来添加多个可能的变量值 或者 变量类型 let b : "male" | "female" b = "male" b = "female" // b = "hello" 这样就不行了 let c : boolean | string; c = true; c = 'hello' -
any
尽量不要用//2、any 表示任何值 及 类型 都可以,尽量不要使用any let d : any; //显式any ; 如果不指定类型,则TS解析器自动判断该变量是any 隐士any d = 20; d = 'hello' -
unknown
//3、unknown 表示未知类型 let e : string let f : unknown f = 'hello' e = f as string //可以用来告诉解析器变量的实际类型 e = <string>f //也可通过<>方式来声明变量的实际类型 -
数组Array
//4、数组,尽量存储同种类型,长度不限制 let m : number[] //或者let m : Array<number> m = [1,2,3,4] -
元组tuple
//5、元组:固定长度的数组,具体语法: [类型,类型,类型] let o : [string, string] -
对象Object
//6、object对象, 可用{}来指定对象中可以包含哪些属性 let h : {name: string, age?: number} //表明h对象中只能有name或者age,其中age可有可无 let g : {name: string, [propName: string]: any} //这种方式会指定后面多个参数的属性名及属性值的类型 g = {name: 'smallTiger', gender: 'male'} -
函数function
//5、设置函数结构的类型声明,具体语法: (形参1: 类型, 形参2: 类型) => 返回值类型 let j : (a: number, b: number) => number j = (l, n) => { return l + n }
2、编译选项
三、接口
作用:一系列抽象方法的声明,是一些方法特征的集合,这些方法都应该是抽象的,需要由具体的类去实现,然后第三方就可以通过这组抽象方法调用,让具体的类执行具体的方法。
- 指定 键值对的值类型
interface RunOptions {
program:string;
commandline:string[]|string|(()=>string);
}
// commandline 是字符串
var options:RunOptions = {program:"test1",commandline:"Hello"};
console.log(options.commandline)
// commandline 是字符串数组
options = {program:"test1",commandline:["Hello","World"]};
console.log(options.commandline[0]);
console.log(options.commandline[1]);
// commandline 是一个函数表达式
options = {program:"test1",commandline:()=>{return "**Hello World**";}};
var fn:any = options.commandline;
console.log(fn());
- 指定 键值对的索引值类型
interface namelist {
[index:number]:string
}
// 类型一致,正确
var list2:namelist = ["Google","Runoob","Taobao"]
// 错误元素 1 不是 string 类型
// var list2:namelist = ["Runoob",1,"Taobao"]
- 支持接口继承
interface IParent1 {
v1:number
}
interface IParent2 {
v2:number
}
interface Child extends IParent1, IParent2 { }
var Iobj:Child = { v1:12, v2:23}
console.log("value 1: "+Iobj.v1+" value 2: "+Iobj.v2)