typescript学习:class类

本文内容如下

class类

如果你都有了答案,可以忽略本文章,或去TS学习地图寻找更多答案


ES6中的 TS类

公共属性修饰符:

  • public:公开的,可读可写,默认修饰符
  • private:私有的,不可读不可写
  • protected:子类可访问
  • readonly: 只能读不能写
  • static:静态属性或静态方法(JS中也有)
class Animal {
    public name: string;
	
	constructor(name: string){
		this.name = name
	}
	
	static isAnimal(instantce) {
		return instantce instanceof Animal
	}
	
    eat(){
    	console.log(`${this.name} is eating`)
	}
}

const dog = new Animal('旺财')
dog.eat()            //旺财 is eating
Animal.isAnimal(dog) //true

TS类继承

class Person {
    name: string
    constructor(name: string) {
        this.name = name
    }
    run(): string {
        return `${this.name} is running`
    }
}
let p = new Person('dashen')
p.run()

class Student extends Person {
    constructor(name: string, public age: number) {
        super(name)  //实现继承父类的constructor中name
    }

    study() {
        console.log(`${this.name} is studying`)
    }
}
const s = new Student('小明')
console.log(s)  //{ name: '小明', age: 18 }
s.study()   //小明 is studying

存取器 setter getter

例子:对名字的长度做出限制

class People {
    private _fullname: string = 'tom'

    get fullname(): string {
        return this._fullname
    }

    set fullname(name: string) {
        if (name && name.length < 6) {
            this._fullname = name
        } else {
            console.log(`the length of '${name}' is greater than 6`)
        }
    }
}

let p = new People()
console.log(p.fullname);     //'tom'
p.fullname = 'hello world'   //the length of 'hello world' is greater than 6
p.fullname = 'hello'
console.log(p.fullname);     //'hello'

抽象类

抽象类:原型

  1. 使用关键字:abstract,抽象方法只能出现在抽象类里面
  2. 提供其他类继承的基类,不能直接被实例化
  3. 抽象类的子类必须实现抽象类里面的抽象方法
//定义标准
abstract class Animal {
    name: string = ''
    contructor(name: string) {
        this.name = name
    }

    run() {
        console.log(this.name + 'is running')
    }

    abstract eat(): any
}


class Dog extends Animal {
    constructor(public name: string) {
        super()
    }
    eat() {
        console.log(this.name + 'is eating')
    }
    sleep() {
        console.log(this.name + 'is sleeping')
    }
}
let d: Dog = new Dog('旺财')
d.eat()
d.run()

let d = new Animal('旺财')    // 报错,抽象类不能实例化

let d: Animal = new Dog('旺财')  
d.sleep()  //报错,抽象类没有sleep方法

学习更多

TS学习地图

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
TypeScript 是一种由微软开发并维护的开源编程语言。它是 JavaScript 的扩展,为 JavaScript 提供了静态类型检查、类、接口和命名空间等功能。 以下是 TypeScript学习笔记: ## 安装 使用 npm 安装 TypeScript: ``` npm install -g typescript ``` ## 编写 TypeScript 代码 TypeScript 文件的扩展名为 `.ts`。可以使用任何文本编辑器来编写 TypeScript 代码。 以下是一个简单的 TypeScript 代码示例: ```typescript function greeter(name: string) { return "Hello, " + name + "!"; } let user = "John"; console.log(greeter(user)); ``` ## 编译 TypeScript 代码 使用 `tsc` 命令编译 TypeScript 代码。例如,将上面的代码编译为 JavaScript: ``` tsc greeter.ts ``` 这将生成一个名为 `greeter.js` 的 JavaScript 文件。 ## 类型注解 TypeScript 中的类型注解指定了变量、函数参数和函数返回值的类型。例如,以下代码指定了 `name` 参数的类型为 `string`: ```typescript function greeter(name: string) { return "Hello, " + name + "!"; } ``` ## 接口 接口定义了一个对象的属性和方法。例如,以下代码定义了一个 `Person` 接口: ```typescript interface Person { firstName: string; lastName: string; } function greeter(person: Person) { return "Hello, " + person.firstName + " " + person.lastName + "!"; } let user = { firstName: "John", lastName: "Doe" }; console.log(greeter(user)); ``` ## 类 类是面向对象编程的基本构建块。以下是一个简单的类的示例: ```typescript class Greeter { greeting: string; constructor(message: string) { this.greeting = message; } greet() { return "Hello, " + this.greeting + "!"; } } let greeter = new Greeter("world"); console.log(greeter.greet()); ``` ## 泛型 泛型允许在编写代码时指定未知的类型。以下是一个泛型函数的示例: ```typescript function identity<T>(arg: T): T { return arg; } let output = identity<string>("hello"); console.log(output); ``` ## 命名空间 命名空间是用于组织和管理代码的方式。以下是一个简单的命名空间的示例: ```typescript namespace MyNamespace { export function sayHello() { console.log("Hello from MyNamespace!"); } } MyNamespace.sayHello(); ``` ## 模块 模块是将代码分离成可重用的单元的方式。以下是一个简单的模块的示例: ```typescript export interface Person { firstName: string; lastName: string; } export class Greeter { greeting: string; constructor(message: string) { this.greeting = message; } greet() { return "Hello, " + this.greeting + "!"; } } ``` 可以使用 `import` 关键字导入模块中的对象: ```typescript import { Person, Greeter } from "./module"; let user: Person = { firstName: "John", lastName: "Doe" }; let greeter = new Greeter("world"); console.log(greeter.greet()); ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值