接口
接口是 TypeScript 中定义复杂类型的一种方式,它可以描述一个对象的结构。关键字 interface
interface Car {
color: string
}
let car: Car = { color: "红色" };
console.log("jarlen","car:"+car.color);
类
TypeScript支持基于类的面向对象的编程方式,定义类的关键字为class,后面紧跟类名。类描述了所创建的对象共同的属性和方法。关键是class
class Person {
private _name: string = "";
public set name(value: string) {
this._name = value;
}
public get name(): string {
return this._name;
}
private _age: number = 12;
public set age(value: number) {
this._age = value;
}
public get age(): number {
return this._age;
}
}
let person:Person = new Person();
person.name="Jarlen"
person.age=6
console.log("jarlen", "car:" + person.name+","+person.age);
继承
继承就是子类继承父类的特征和行为,使得子类具有父类相同的行为。TypeScript中允许使用继承来扩展现有的类,对应的关键字为extends。
class Person {
private _name: string = "";
constructor(name: string) {
this._name = name;
}
public set name(value: string) {
this._name = value;
}
public get name(): string {
return this._name;
}
}
class Boy extends Person {
private _sex: string = '男孩';
constructor(name: string) {
super(name);
}
public set sex(value: string) {
this._sex = value;
}
public get sex(): string {
return this._sex;
}
}
let person: Person = new Boy("Jarlen");
console.log("jarlen", "person:" + person.name);
模块
随着应用越来越大,通常要将代码拆分成多个文件,即所谓的模块(module)。模块可以相互加载,并可以使用特殊的指令 export 和 import 来交换功能,从另一个模块调用一个模块的函数。
两个模块之间的关系是通过在文件级别上使用 import 和 export 建立的。模块里面的变量、函数和类等在模块外部是不可见的,除非明确地使用 export 导出它们。类似地,我们必须通过 import 导入其他模块导出的变量、函数、类等。
export class Person{
private _name: string
public set name(value: string) {
this._name = value
}
public get name(): string {
return this._name
}
private _age: number
public set age(value: number) {
this._age = value
}
public get age(): number {
return this._age
}
constructor(name: string, age: number) {
this._name = name
this._age = age
}
}
import { Person } from './Person';
export class Boy extends Person {
private _sex: string = '男';
public set sex(value: string) {
this._sex = value;
}
public get sex(): string {
return this._sex;
}
constructor(name: string, age: number) {
super(name, age);
}
}
import { Boy } from '../bean/Boy';
import { Person } from '../bean/Person';
let person:Person = new Boy("Jarlen",12);
泛型
泛型允许在定义函数、接口或类时使用类型参数。
function identity<T>(arg: T): T {
return arg;
}
let output = identity<string>("Hello, jarlen!");
console.log(output);