typescript 定义类

发布于:2024-07-31 ⋅ 阅读:(110) ⋅ 点赞:(0)
/* js class 和 ts class 的区别
----------+------+------------
|  语言    |  js  |     ts    |
----------+------+-----------|
|  公有    |  有  | js+public |
----------+------+-----------|
|  私有    |  无  |  private  |
----------+------+-----------|
|  静态    |  有  |  static   |
----------+------+-----------|
|  只读    |  无  | readonly  |
----------+------+-----------|
|  受保护  |  无  | protected |
----------+------+-----------

*/



class Class1 {
  public name = "全易"
  private location = "北京"
  static age = 18
  readonly slogan = "好好吃饭,好好谁觉"
  protected job = "devlopmenter"
  fn1() {
    console.log(this.job);
  }
};
// new Class1().job = "kk";  // 报错
// new Class1().slogan = "kk"; // 报错
// new Class1().location = "kk"; // 报错




// 作为接口使用(规定类型)
class Class2 {
  name: string
  location: string
  age: number
  slogan?: string
  job: string
}
// 使用规则(必须匹配Class2的规则)
let obj1: Class2 = {
  name: "全易",
  location: "北京",
  age: 18,
  job: "开发"
}
function fn(params: Class2) {
  console.log(params);
}
fn(obj1) // 必须匹配Class2的规则




// 交叉类型(要求满足多种规则)
class Class3 {
  love: string
  money?: number
}
// 既满足Class2的规则又满足Class3的规则
let obj2: Class2 & Class3 = {
  name: "全易",
  location: "北京",
  age: 18,
  job: "开发",
  love: "吃喝玩乐"
}

网站公告

今日签到

点亮在社区的每一天
去签到