typescript 從0開始

在cmd上顯示

npm install -g ts-node
npm install -g  @types/node

執(zhí)行命令

//編譯成原生js
tsc demo.ts
ts-node demo.ts

初始化typescript

tsc --init

interface接口

var getPersonName = function (person) {
    console.log(person.name);
};
var setPersonName = function (person, name) {
    person.name = name;
};
var person = {
    name: "dell",
    say: function () {
        return "hello";
    },
    //增加教師
    teach: function () {
        return "teach";
    }
};
getPersonName(person);
setPersonName(person, "lee");
var User = /** @class */ (function () {
    function User() {
        this.name = "Mel";
    }
    User.prototype.say = function () {
        return "12";
    };
    return User;
}());
var say = function (word) {
    return word;
};

繼承

class Person {
  name = "Anna";
  getName() {
    return this.name;
  }
}
class Teacher extends Person {
  getTeacherName() {
    return "Teacher";
  }
  getName() {
    return super.getName() + " lee";
  }
}
const teacher = new Teacher();
console.log(teacher.getName());

constructor

//constructor
class Person {
  public name: string;
  constructor(name: string) {
    this.name = name;
  }
}

const person = new Person("lee");
console.log(person.name);

簡便寫法

class Person {
  // public name: string;
  constructor(public name: string) {
    // this.name = name;
  }
}

const person = new Person("lee");
console.log(person.name);
class Person {
  constructor(public name: string) {}
}

class Teacher extends Person {
  constructor(name: string, public age: number) {
    super(name);
  }
}

const teacher = new Teacher("lucky", 28);
console.log(teacher.age);
console.log(teacher.name);

setter 和 getter

class Person {
  constructor(private _name: string) {}
  get name() {
    return this._name + " lee";
  }
  set name(name: string) {
    const realName = name.split(" ")[0];
    this._name = realName;
  }
}

const person = new Person("kenny");
console.log(person.name);
person.name = "dell lee";
console.log(person.name);

靜態(tài)函數(shù),只生成一個(gè)對象

class Demo {
  private static instance: Demo;
  private constructor(private _name: string) {}
  static getInstance(name: string) {
    if (!this.instance) {
      this.instance = new Demo(name);
    }
    return this.instance;
  }
  get name() {
    return this._name;
  }
}

const demo1 = Demo.getInstance("nana");
const demo2 = Demo.getInstance("nana too");

console.log(demo1.name);
console.log(demo2.name);

readonly只能讀不能改

class Person{
  public readonly _name;
  constructor(name:string) {
    this._name=name
  }
}

抽象類

abstract class Geom {
  width: number = 0;
  getType() {
    return "Geom";
  }
  abstract getArea(): number;
}

class Circle extends Geom {
  getArea(): number {
    return 123;
  }
}

接口繼承

interface Person {
  name: string;
}
interface Teacher extends Person {
  name: string;
  teachingAge: number;
}

interface Student {
  name: string;
  age: number;
}

const getUserInfo = (user: Person) => {
  console.log(user.name);
};

const teacher = {
  name: "dell",
};

const student = {
  name: "lee",
  age: 18,
};

getUserInfo(teacher);
getUserInfo(student);

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容