1. TypeScript 的安装 npm i -g typescript
这个typescript转成js 是使用 tsc 文件.ts
2. typescript的特点 是r
let age: number = 1;
这个冒号表示后面是一个类型
有一个any 是表示用户输入不清楚输入的是什么内容 使用的。但是尽量别使用,因为这样typescript就没有意义了。
3. 数组也是有类型的
let arr:[]number = [1, 2, 23]
也可以定义
let arr:[number, string] = [1, "a"]
这个只能先定义2个数,如何想要加长度需要使用arr.push();
4. 接口
接口一般与类结合
5. 函数
function add (x: number, y: number, z?: number):number {
if(typeof z === 'number') {
return x + y + z
}else {
return x + y
}
}
这个表示可选
let add2:(x: number, y: number, z?: number) => number = add 重点在这个箭头需要转换
6. 类型推论 联合类型和 类型断言
类型推论就是第一次使用的使用没有定义是什么类型,但是赋值的时候Ts会跟据第一次赋值而推论是什么类型,因此当改其他就是会报错:
报错如下:
let age = 3;
age = “45” 这个就是错误的
联合类型它表示某个变量可以是哪些联合的类型 例如:
let numberOrString: number | string = 45
numberOrString = "xin"
类型断言这个就是与联合类型相结合,联合类型的变量只能使用联合的两个类型共同的方法和属性。加了这个断言就是直接把这个当成是某个类型就是可以使用这个类型了。
function numberOrStringFun(numberOrString: number | string):number {
if(typeof numberOrString === "string") {
let str = numberOrString as string;
return str.length
}else {
let num = numberOrString as number;
return num
}
}
7. 类与对象,对象类的特性是封装、继承、多态。
封装是把一个数据封装成一个对象
继承就是类可以继承类就是变成了 父子类,当子类使用父类的时候 使用super
多态就是一个父类可以由多个子类继承,但是在使用的过程中 实例对象只要是那个类的方法
类中三个 private public protected protected 只要类中和子类中可以访问,实例对象是不可以访问的。
还有一个readonly只读属性类型 不能改值
class Car {
readonly static: string = "xin"
name: string
age: number
}
let myCar = new Car()
myCar.name = "我的爱车"
myCar.age = 1
myCar.static = x //这个就是会报错
class Tesla extends Car {
}
8. 类对接口的结合。。
因为有时候许多类拥有共同的方法和属性。所以把这些给提取出来,这样会好看。
interface Iopen {
openDoor()
}
class ironDoor implements Iopen {
openDoor(){
}
}
class woodDoor implements Iopen {
openDoor(){
}
}
如果多个只需要加个逗号
当接口的继承使用的是extends
9. 枚举
enum 名称 {} 内容可以是各种的文字,其实和数组很想可以使用 名称[0] 来获得第一个内容, 也可以跟对象很像名称.什么属性
enum Basketballer{
Yao = 1,
Yi,
Wang
}
Basketballer.Yao; //1
Basketballer.Yi; //2
Basketballer.Wang; //3
Basketballer[1]; //"Yao"
Basketballer[2]; //"Yi"
Basketballer[3]; //"Wang"
10. 泛型
泛型其实就是 例如 不清楚函数的参数和返回值的类型 所以需要定义下,但是会出现一个问题 当要使用参数固有的方法时候会报错,所以这里是需要interface接口来定义下例如:
interface haveLength {
length: number
}
function a<T extends haveLength>(te: T): T {
console.log(te.length)
return te
}
还有类不清楚什么参数 返回之类的
其实最主要的是与class的结合,
class Person<T, U> {
name: T
age: U
}
let me = new Person<string, number>()
me.name = "俞新雨"
me.age = 25
11. 类型别名 就是把类型比较长的抽出来 使用的是type
浙公网安备 33010602011771号