/* 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: "吃喝玩乐"
}