day177-TypeScript基础小记-构造函数

要点

  1. 构造函数。
  2. 编译成JavaScript后。
  3. 把类当做接口使用。

构造函数

简单的构造函数

class Greeter {
greeting: string
constructor(message: string) {
this.greeting = message
}
greet() {
return 'Hello,' + this.greeting
}
}
let greeter: Greeter // Greeter类的实例的类型是Greeter
greeter = new Greeter('TypeScript')
console.log(greeter.greet())

编译成JavaScript

let Greeter被赋值为构造函数

let Greeter = (function () {
function Greeter(message) {
this.greeting = message
}
Greeter.prototype.greet = function () {
return 'Hello,' + this.greeting
}
return Greeter
})()
let greeter
greeter = new Greeter('world')
console.log(greeter.greet())

例子改写

class Greeter {
static standardGreeting = 'hello, there'
greeting: string
greet () {
if (this.greeting) {
return 'hello,' + this.greeting
} else {
return Greeter.standardGreeting
}
}
}
let greeter1: Greeter
greeter1 = new Greeter()
console.log(greeter1)
// typeof Greeter意思取Greeter类的类型,而不是实例类型。
let greeterMaker: typeof Greeter = Greeter
greeterMaker.standardGreeting = 'Hey there!'
let greeter2: Greeter = new greeterMaker()
console.log(greeter2.greet())

类当做接口使用

类定义会创建两个东西:
类的实例累心和一个构造函数(因为类可以创建出类型,所以你能够在允许使用接口的地方使用类)

class Point {
x: number
y: number
}
interface Point3d extends Point {
z: number
}
let point3d: Point3d = { x: 1, y: 2, z: 3 }

文章作者: lmislm
文章链接: http://lmislm.com/2019/07/09/2019-07-09/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 LMISLMのBlog