大佬教程收集整理的这篇文章主要介绍了5万字 TypeScript入门系列(第三期)(建议收藏),大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
极客江南: 一个对开发技术特别执着的程序员c;对移动开发有着独到的见解和深入的研究c;有着多年的iOS、Android、HTML5开发经验c;对NativeApp、HybridApp、WebApp开发有着独到的见解和深入的研究, 除此之外还精通 JavaScript、AngularJS、 NodeJS 、Ajax、jQuery、Cordova、React Native等多种Web前端技术及Java、PHP等服务端技术。
初学者玩转 TypeScript系列c;总计 5 期c;本文为第 3 期c;点赞、收藏、评论、关注、三连支持!
一期知识点击这里
二期知识点击这里
那么c;Typescript 是不是很难?
首先c;我可以肯定地告诉你c;你的焦虑是多余的。新手对学习新技术有很强的排斥心理c;主要是因为基础不够扎实c;然后自信心不够强。
class Person {
name:String; // 和ES6区别, 需要先定义实例属性, 才能够使用实例属性
age:number;
constructor(name:String, age:number){
this.name = name;
this.age = age;
}
say():void{
console.log(`我的名称叫${this.name}, 我的年龄是${this.age}`);
}
static food:String; // 静态属性
static eat():void{ // 静态方法
console.log(`我正在吃${this.food}`);
}
}
let p = new Person('lnj', 34);
p.say();
Person.food = '蛋挞';
Person.eat();
class student extends Person{
book:String;
constructor(name:String, age:number, book:String){
super(name, age);
this.book = book;
}
say():void{
console.log(`我是重写之后的say-${this.name}${this.age}${this.book}`);
}
static eat():void{
console.log(`我是重写之后的eat-${this.food}`);
}
}
let stu = new student('zs', 18, '代码情缘');
stu.say();
student.food = '冰淇淋';
student.eat();
public(公开的) :
protected(受保护的) :
private(私有的) :
readonly(只读的) :
/*
class Person {
public name:string; // 默认情况下就是public的
protected age:number;
private gender:string;
constructor(name:string, age:number, gender:string){
this.name = name;
this.age = age;
this.gender = gender;
}
say():void{
console.log(`name=${this.namE},age=${this.agE},gender=${this.gender}`);
}
}
class student extends Person{
constructor(name:string, age:number, gender:string){
super(name,age,gender);
}
say():void{
// console.log(`name=${this.namE}`);
// console.log(`age=${this.agE}`);
// console.log(`gender=${this.gender}`);
}
}
let p = new Person('lnj',34, 'male');
p.say();
// console.log(p.agE);
// console.log(p.gender);
let stu = new student('zs', 18, 'female');
stu.say();
// console.log(stu.agE);
*/
/*
class Demo {
readonly name:string;
constructor(name:string){
this.name = name;
}
static food:string;
}
let demo = new Demo('123');
console.log(demo.Name);
// demo.name = 'abc';
console.log(demo.Name);
*/
public :
protected :
private
/*
class Person {
name:string;
age:number;
gender:string;
constructor(name:string, age:number, gender:string){
this.name = name;
this.age = age;
this.gender = gender;
}
public sayName():void{
console.log(`name=${this.namE}`);
}
protected sayAge():void{
console.log(`age=${this.agE}`);
}
private saygender():void{
console.log(`gender=${this.gender}`);
}
say():void{
this.sayName();
this.sayAge();
this.saygender();
}
}
class student extends Person {
constructor(name: String, age: number, gender: String) {
super(name, age, gender);
}
say():void{
this.sayName();
this.sayAge();
this.saygender();
}
}
let p = new Person('lnj', 34, 'male');
p.say();
p.sayName();
p.sayAge();
p.saygender();
let stu = new student('zs', 18, 'female');
stu.say();
*/
/*
需求: 有一个基类, 所有的子类都需要继承于这个基类, 但是我们不希望别人能够通过基类来创建对象
* */
/*
class Person {
name:string;
age:number;
gender:string;
protected constructor(name:string, age:number, gender:string){
this.name = name;
this.age = age;
this.gender = gender;
}
say():void{
console.log(`name=${this.namE},age=${this.agE},gender=${this.gender}`);
}
}
class student extends Person {
constructor(name: String, age: number, gender: String) {
super(name, age, gender);
}
}
let p = new Person('lnj', 34, 'male');
let stu = new student('zs', 18, 'female');
*/
class Person {
// 注意点: 在TS中如果定义了实例属性, 那么就必须在构造函数中使用, 否则就会报错
name:String;
age?:number; // 可选属性
constructor(name:String, age?:number){
this.name = name;
this.age = age;
}
// setNameAndAge(name:string, age:number){
// this.name = name;
// this.age = age;
// }
}
let p = new Person('lnj');
console.log(p);
/*
class Person {
name:string;
age:number;
constructor(name:string, age?:number){
this.name = name;
this.age = age;
}
}
* */
class Person {
constructor(public name:String,public age:number){
}
}
let p = new Person('lnj', 34);
console.log(p);
class Person {
private _age:number = 0;
set age(val:number){
console.log('进入了set age方法');
if(val<0){
throw new Error('人的年龄不能小于零');
}
this._age = val;
}
get age():number{
console.log('进入了get age方法');
return this._age;
}
}
let p = new Person();
p.age = 34;
// p.age = -6; // p.age(-6);
console.log(p.age);
什么是抽象类?
抽象类是专门用于定义哪些不希望被外界直接创建的类的 抽象类一般用于定义基类 抽象类和接口一样用于约束子类
抽象类和接口区别?
接口中只能定义约束, 不能定义具体实现 而抽象类中既可以定义约束, 又可以定义具体实现
class Person {
name:String;
age: number;
protected constructor(name:String, age:number){
this.name = name;
this.age = age;
}
}
class student extends Person{
constructor(name:String, age:number){
super(name, age);
}
}
// let p = new Person('lnj', 34);
let stu = new student('lnj', 34);
console.log(stu);
*/
abstract class Person {
abstract name:String;
abstract say():void;
eat():void{
console.log(`${this.name}正在吃东西`);
}
}
// let p = new Person();
class student extends Person{
name:String = 'lnj';
say():void{
console.log(`我的名字是${this.name}`);
}
}
let stu = new student();
stu.say();
stu.eat();
// 类"实现"接口
/*
interface PersonInterface {
name:string;
say():void;
}
// 只要实现的某一个接口, 那么就必须实现接口中所有的属性和方法
class Person implements PersonInterface{
name:string = 'lnj';
say():void{
console.log(`我的名字叫:${this.namE}`);
}
}
let p = new Person();
p.say();
*/
// 接口"继承"类
class Person {
// protected name:string = 'lnj';
name:String = 'lnj';
age:number = 34;
protected say():void{
console.log(`name = ${this.name}, age = ${this.age}`);
}
}
// let p = new Person();
// p.say();
// 注意点: 只要一个接口继承了某个类, 那么就会继承这个类中所有的属性和方法
// 但是只会继承属性和方法的声明, 不会继承属性和方法实现
// 注意点: 如果接口继承的类中包含了protected的属性和方法, 那么就只有这个类的子类才能实现这个接口
interface PersonInterface extends Person{
gender:String;
}
class student extends Person implements PersonInterface{
gender:String = 'male';
name:String = 'zs';
age:number = 18;
say():void{
console.log(`name = ${this.name}, age = ${this.age}, gender = ${this.gender}`);
}
}
let stu = new student();
stu.say();
// 泛型类
class Chache<T> {
arr:T[] = [];
add(value:T):T{
this.arr.push(value);
return value;
}
all():T[]{
return this.arr;
}
}
let chache = new Chache<number>();
chache.add(1);
chache.add(3);
chache.add(5);
console.log(chache.all());
// 当我们定义了多个同名的接口时, 多个接口的内容会自动合并
interface TesTinterface {
name:String;
}
interface TesTinterface {
age:number;
}
/*
interface TesTinterface {
name:string;
age:number;
}
* */
class Person implements TesTinterface{
age:number = 19;
name:String = 'lnj';
}
码字不易c;在线求个三连支持。
大家记得收藏前c;先点个赞哦!好的文章值得被更多人看到。
推荐阅读:
13万字C语言保姆级教程2021版
10万字Go语言保姆级教程
2 万字 Jquery 入门教程
3 万字 html +css 入门教程
169集保姆级C语言视频
最后c;再多一句c;粉丝顺口溜c;关注江哥不迷路c;带你编程上高速。
以上是大佬教程为你收集整理的5万字 TypeScript入门系列(第三期)(建议收藏)全部内容,希望文章能够帮你解决5万字 TypeScript入门系列(第三期)(建议收藏)所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。