TypeScript 基础语法入门(下)

简介: TypeScript 基础语法入门

TypeScript 基础语法入门(上)https://developer.aliyun.com/article/1392243

传参错误

对象缺少属性

image.png

属性只读

image.png

强校验

对于字面量形式的对象参数会进行强校验

image.png

对于直接传递的变量则不会

image.png

解决方式

image.png

可以动态添加一个属性名是string类型,属性值是any的属性。

属性和方法都可以添加

image.png

image.png

类也可以应用接口

image.png

接口还可以继承

image.png

函数接口


         

tsc --init

image.png

会生成一个tsconfig.json文件

把ts文件编译成为原生js

interface接口只是帮助我们校验的工具,编译为js之后会消失。


         

         

输入tsc demo.ts

image.png

类的定义和继承

类的定义


         

类的继承


         


类的重写



         

类的访问类型和构造器

private, protected, public 访问类型

public允许我在类的内外被调用

private允许在类内被使用

protected允许在类内及继承的子类中使用


         

         

image.png


         

constructor

传统写法


         

简化写法

class Parent {
    // public name:string;
  constructor(public name:string) {
   // this.name = name
  };
}
const p = new Parent('name')

继承时要调用父类的构造器方法

class Parent {
  public name: string;
  constructor(name: string) {
    this.name = name;
  }
}
class Son extends Parent {
  constructor(public age: number) {
    super("name");
  }
}
const s = new Son(18);
console.log(s.age); // 18
console.log(s.name); // name

静态属性、Setter、Getter

Setter、Getter

class Parent {
  constructor(private _name: string) {}
  get name() {
    return this._name;
  }
  set name(name: string) {
    const realName = name.split(" ")[0];
    this._name = realName;
  }
}
const p = new Parent("jack");
console.log(p.name); // jack
p.name = "Tom";
console.log(p.name); // Tom

创建一个唯一的实例

class Demo {
  private static instance: Demo;
  private constructor(public name: string) {}
  static getInstance() {
    if (!this.instance) {
      this.instance = new Demo("jack");
    }
    return this.instance;
  }
}
const demo1 = Demo.getInstance();
const demo2 = Demo.getInstance();
console.log(demo1.name); // jack
console.log(demo2.name); // jack

注意

这里的getInstance是静态方法,在类上面。

demo1和demo2是同一个实例对象

抽象类

readonly

class Parent {
  public readonly name: string;
  constructor(name: string) {
    this.name = name;
  }
}
const p = new Parent("jack");
 // p.name = 'tom' 不可以
console.log(p.name); // jack

抽象类

abstract class Geom {
  width: number;
  getType() {
    return "Gemo";
  }
  abstract getArea(): number;
}
class Circle extends Geom {
  getArea() {
    return 123;
  }

interface的继承

interface Person {
  name: string;
}
interface Teacher extends Person {
  age: number;
}
interface Student extends Person {
  age: number;
}
const teacher = {
  name: "dell",
};
const student = {
  name: "de",
  age: 18,
};
const getName = (user: Person) => {
  console.log(user.name);
};
getName(teacher); // dell
getName(student); // de
目录
相关文章
|
27天前
|
JavaScript 前端开发 安全
TypeScript无缝衔接ArkTS:快速入门鸿蒙ArkTS基本语法
【10月更文挑战第12天】TypeScript无缝衔接ArkTS:快速入门鸿蒙ArkTS基本语法
80 0
TypeScript无缝衔接ArkTS:快速入门鸿蒙ArkTS基本语法
|
1月前
|
JavaScript 前端开发 编译器
【小白入门】 浏览器如何识别Typescript?
【10月更文挑战第1天】浏览器如何识别Typescript?
|
2月前
|
JavaScript 前端开发 编译器
TypeScript,从0到入门带你进入类型的世界
该文章提供了TypeScript的入门指南,从安装配置到基础语法,再到高级特性如泛型、接口等的使用,帮助初学者快速掌握TypeScript的基本用法。
|
4月前
|
存储 JavaScript 开发者
【Vue3+TypeScript】CRM系统项目搭建之 — 关于 VUE3 语法新变化(四)
【Vue3+TypeScript】CRM系统项目搭建之 — 关于 VUE3 语法新变化(四)
47 0
【Vue3+TypeScript】CRM系统项目搭建之 — 关于 VUE3 语法新变化(四)
|
4月前
|
JavaScript API 网络架构
【Vue3+TypeScript】CRM系统项目搭建之 — 关于 VUE3 语法新变化(三)
【Vue3+TypeScript】CRM系统项目搭建之 — 关于 VUE3 语法新变化(三)
47 0
【Vue3+TypeScript】CRM系统项目搭建之 — 关于 VUE3 语法新变化(三)
|
4月前
|
JavaScript API
【Vue3+TypeScript】CRM系统项目搭建之 — 关于 VUE3 语法新变化(二)
【Vue3+TypeScript】CRM系统项目搭建之 — 关于 VUE3 语法新变化(二)
39 0
【Vue3+TypeScript】CRM系统项目搭建之 — 关于 VUE3 语法新变化(二)
|
4月前
|
JavaScript API UED
【Vue3+TypeScript】CRM系统项目搭建之 — 关于 VUE3 语法新变化(五)
【Vue3+TypeScript】CRM系统项目搭建之 — 关于 VUE3 语法新变化(五)
48 0
|
4月前
|
JavaScript 前端开发 API
【Vue3+TypeScript】CRM系统项目搭建之 — 关于 VUE3 语法新变化(一)
【Vue3+TypeScript】CRM系统项目搭建之 — 关于 VUE3 语法新变化(一)
50 0
|
5月前
|
JavaScript 前端开发 程序员
typescript入门笔记分享
typescript入门笔记分享
30 0
|
6月前
|
JavaScript 前端开发
TypeScript极速入门笔记1
TypeScript极速入门笔记1
73 4