Ts
tsc 命令
tsc -h 帮助
tsc --init 创建一个 tsconfig.json file
tsconfig.json 里面可配置
tsc -w 进行监听
相对于js 新增的一些类
元组 tuple 需要声明每个元素的类型的数组,不可增加或减少元素
let t: [string, number,boolean] = ['1', 1, true]
console.log(t)
数组
// 类型声明两种方法 :Array<any> :number[]
let myarr:Array<any> = [5]
let arr:number[] = [1,2,3]
枚举类型
enum Color {
Red = 2, Green, Blue
}
let c: Color = Color.Red // 2
null undefined
console.log(typeof null) // object
console.log(typeof undefined) // undefined
Symbol es6
let sym1 = Symbol('key')
let sym2 = Symbol('key')
console.log(sym1 === sym2) /// false
let obj = {
[sym1]:'val'
}
console.log(obj[sym1])
Ts 中的函数及类
// 函数需要加一些参数类型及返回值类型 可设置默认值
let mySum = function (x: number = 1, y: number): number {
return x + y
}
接口与类
// 接口 定义对象的样子
interface Person{
readonly name: string, // 只读
age?: number, // 可选
[propName: string]:any // 索引签名 可定义任意多个属性和类型
}
let p : Person = {
firstName: 'wang',
lastName: 'ying',
name: 'p',
// age: 18,
time: 'asd'
}
// 类
class Animal {
// publis 默认 子类及实例均可访问
// protected 子类可访问 实例不可
// private 子类实例均不可访问
// readonly 只读属性
// 静态属性 用Animal.staticPro 获取
static staticPro = 111
public name: string = ''
private age: number = 18
public sayName() {
console.log(this.name, this.age);
}
constructor(name: string) {
this.name = name
}
// 使用时在类上直接调用 Animal.isAnimal(xxx)
static isAnimal(a: any) {
return a instanceof Animal
}
sayHello(): string {
console.log( this, 'this' )
return this.name +' hello'
}
get animalName() {
return this.name
}
set animalName(name: string){
this.name = name
}
}
// 类的继承
class Dog extends Animal{
constructor(public name: string) {
super(name)
}
// 对父类函数重写
sayHello():string {
console.log(this.name);
return ''
}
}
// 抽象类 Person2
// 抽象类 只能声明类, 不可进行实例化, 子类可通过继承实现
abstract class Person{
public abstract sayHello():void // 抽象方法
public getProps() { // 非抽象方法
return 'props'
}
}
// 继承抽象类
class Teacher extends Person{
name: string
constructor(name: string) {
super()
this.name = name
}
sayHello(): void {
}
}