typescript函数和类的基础
目录
函数
函数的基本使用
函数参数的使用
构造函数
函数重载
类
类的基本使用
类的继承
static与instanceof
修饰符
getter与setter
抽象类
初始化
函数
函数的基本使用
函数是JavaScript应用程序的基础。它帮助你实现抽象层,模拟类,信息隐藏和模块。在TypeScript里,虽然已经支持类,命名空间和模块,但函数仍然是主要的定义行为的地方。TypeScript为JavaScript函数添加了额外的功能,让我们可以更容易地使用
匿名函数
const aa = function(a:number,b:number):number{return a
}
let a1 = aa(8,9)
console.log(a1);
有名函数
function bb(a:number,b:number){return b
}
let b1 = bb(7,6)
console.log(b1);
箭头函数
const cc = (a:number,b:number):void=>{console.log(`我都两年就爱上的巴士的v阿三不擦时间${a}`);
}
cc(10,11)
接口函数
type dd = (a:number,b:number)=>number
const d1:dd = (x:number,y:number)=>x+y
let d2 = d1(56,87)
console.log(d2);
函数参数的使用
可选参数
const aa:(a:number,b:number)=>number=(x:number,y:number)=>{return y
}
const bb = function(a:number,b?:number):number{return a
}
let b1 = bb(10,undefined)
console.log(b1);
默认值
let cc = function(a:number,b:number,c:number=20){return a+b+c
}
let c1 = cc(20,50)
console.log(c1);
剩余参数
const dd = function(...a:any[]){console.log(a);
}
dd(10,50,60,90,'dasd')
const d1 = function(a:number,b:number,...c:any[]){console.log(a);console.log(b);console.log(c);
}
d1(20,50,'dasd','wwww',10)
构造函数
var aa = new Function("a","b","return a*b")
var bb = aa(10,50)
console.log(bb);
函数重载
重载是方法名字相同,而参数不同,返回类型可以相同也可以不同。
每个重载的方法(或者构造函数都必须有一个独一无二的参数类型列表。
function aa(a:number,b:number):number
function aa(a:string,b:string):string
function aa(a:string,b:number):string
function aa(a:number,b:string):string
function aa(a:any,b:any):any{return a+b
}
let a1 = aa(50,'dsd')
console.log(a1);
参数数量不同的时候
如果参数类型不同,则参数类型应设置为any。参数数量不同你可以将不同的参数设置为可选。
function bb(a:string):number
function bb(a:number,b:string):void
function bb(a:any,b?:any):any{console.log(a);console.log(b);
}
// bb(85)
bb(85,'dasdasdasdasdasdasdasdasd')
类
定义
TypeScript是面向对像的JavaScript。类描述了所创建的对象共同的属性和方法。
TypeScript支持面向对象的所有特性,比如类、接口等。
类的基本使用
定义类的关键字为class,后面紧跟类名,类可以包含以下几个模块(类的数据成员)。字段–字段是类里面声明的变量。字段表示对象的有关数据。
构造函数–类实例化时调用,可以为类的对象分配内存。方法–方法为对象要执行的操作。
class Person{// 字段name:stringage:number// 构造函数constructor(a:string,b:number){this.name = athis.age = b}// 方法sey():void{console.log(`我叫${this.name}我今年${this.age}岁了`);}
}
// 实例化
let aa = new Person('wd',20)
aa.sey()
类的继承
TypeScript支持继承类,即我们可以在创建类的时候继承一个已存在的类,这个已存在的类称为父类,继承它的类称为子类。货继承使用关键字extends,子类除了不能继承父类的私有成员(方法和属性)和构造函数,其他的都可以继承。
TypeScript一次只能继承一个类,不支持继承多个类,但TypeScript支持多重继承(A继承B,B继承C)。
class Person{name:stringage:numberconstructor(a:string,b:number){this.name = athis.age = b}sey():void{console.log(`我叫${this.name}我今年${this.age}岁了`);}
}
// let aa = new Person('搜索',20)
// aa.sey()// 继承
class Student extends Person{sex:stringconstructor(name:string,age:number,sex:string){super(name,age)this.sex = sex}sey():void{super.sey()console.log(`我叫${this.name}我今年${this.age}岁了我的性别是${this.sex}`);}
}
let bb = new Student('订单',20,'女')
bb.sey()
static与instanceof
static关键字用于定义类的数据成员(属性和方法)为静态的,静态成员可以直接通过类名调用。
class Person{// 字段static aa:string// 方法static sey():void{console.log("我叫"+Person.aa);}
}
Person.aa
Person.sey()
instanceof运算符用于判断对象是否是指定的类型,如果是返回true,否则返回false。
class Person{}
let a = new Person
let a1 = a instanceof Person
console.log(a1);class Student extends Person{}
let b = new Student
let b1 = b instanceof Person
console.log(b1);
修饰符
public:默认,公有的,可以在任何地方被访问
protected:受保护,可以被自身及其子类访问
private:私有,只能被其定义所在的类访问
class Person{// 字段// public:默认,公有的,可以在任何地方被访问// protected:受保护,可以被自身及其子类访问// private:私有,只能被其定义所在的类访问public name:stringprotected age:numberprivate sex:string// 构造函数constructor(a:string,b:number,c:string){this.name = athis.age = bthis.sex = c}// 方法sey():void{console.log(`我叫${this.name}我今年${this.age}岁了`);}
}
class Student extends Person{shengao:numberconstructor(a:string,b:number,c:string,d:number){super(a,b,c)this.shengao = d}sey(): void {console.log('aa');this.name='我当时'this.age= 85// this.sex = '男'this.shengao = 185}
}
readonly:可以使用readon1y关键字将属性设置为只读的。只读属性必须在声明时或构造函数里被初始化。
class Plll{// readonly:只读readonly str:string="可分解可得到内存空间参考"readonly str2:stringreadonly str3:stringreadonly str4:stringreadonly str5:stringconstructor(str2:string,str3:string,str4:string,str5:string){this.str2 = str2this.str3 = str3this.str4 = str4this.str5 = str5}sey(){console.log(this.str2,this.str3,this.str4,this.str5);// this.str2 = 'dasdasd'}
}
let b = new Plll('dasdasdasd','dasdasdasdasd','dasdasdas','dwwwasd')
b.sey()
getter与setter
官方的另外一个名字:存取器
通过getters/setters来截取对对象成员的访问
如果存在get,但没有set,则该属性自动是只读的
如果没有指定setter 参数的类型,它将从getter的返回类型中推断出来访问器和设置器必须有相同的成员可见性
class Pll{private _name:string = '球球'get name():string{console.log('get被调用了'); return this._name //取}set name(newName){console.log('set被调用了');this._name = newName //存}
}
let a = new Pll()
a.name = '王五'
console.log(a);
console.log(a.name);
抽象类
定义
抽象类做为其它派生类的基类使用。它们一般不会直接被实例化抽象类是专门用于定义哪些不希望被外界直接创建的类的
抽象类和接口一样用于约束子类
抽象类和接口区别
抽象方法必须包含abstract关键字并且可以包含访问修饰符
接口中只能定义约束,不能定义具体实现。而抽象类中既可以定义约束,又可以定义具体实现
export default {}
abstract class Person{abstract name:stringabstract age:numberabstract show():stringsey(){console.log('嗡嗡嗡');}
}
class Student extends Person{name:string = '周慧敏'age:number = 20show(){return '我啊倒萨打算'}
}
let a = new Student()console.log(a.show());
初始化
初始化顺序:
- 基类的字段被初始化
- 基类构造函数运行
- 子类的字段被初始化
- 子类构造函数运行
export default {}
class fu{name:string = '请求'constructor(){console.log(`大苏打${this.name}`);}
}
class zi extends fu{name:string = '王五'constructor(){super()console.log(`大苏打${this.name}`);}
}
let p = new zi
typescript函数和类的基础相关推荐
- TypeScript函数与类的使用基础知识点
1.类的使用 1.1 类的基本使用 定义:TypeScript 是面向对象的JavaScript. 类描述了所创建的对象共同的属性和方法. ...
- Typescript函数和类的使用
一.函数的基本使用 函数是Javascript应用程序的基础.可以实现抽象层.模拟类.信息隐藏和模块.在Typescript里,虽然已经支持类.命名空间和模块,但函数仍然是主要的定义行为的地方.Typ ...
- TypeScript函数和类
函数介绍 函数是JavaScript应用程序的基础.它帮助你实现抽象层,模拟类,信息隐藏和模块.在TypeScript里,虽然已经支持类,命名空间和模块,但函数仍然是主要的定义行为的地方.TypeSc ...
- TypeScript 函数与以及类的使用
一.函数 1.函数的基本使用 介绍 函数是JavaScript应用程序的基础.它帮助你实现抽象层,模拟类,信息隐藏和模块.在TypeScript里,虽然已经支持类,命名空间和模块,但函数仍然是主要的定 ...
- C++ 学习 ::【基础篇:13】:C++ 类的基本成员函数:类类型成员的初始化与构造函数问题
本系列 C++ 相关文章 仅为笔者学习笔记记录,用自己的理解记录学习!C++ 学习系列将分为三个阶段:基础篇.STL 篇.高阶数据结构与算法篇,相关重点内容如下: 基础篇:类与对象(涉及C++的三大特 ...
- C++ 学习 ::【基础篇:17】:C++ 类与对象:运算符重载介绍、运算符重载函数(类内与类外区别)写法及简单设计实现
本系列 C++ 相关文章 仅为笔者学习笔记记录,用自己的理解记录学习!C++ 学习系列将分为三个阶段:基础篇.STL 篇.高阶数据结构与算法篇,相关重点内容如下: 基础篇:类与对象(涉及C++的三大特 ...
- 【前端】你好,我叫Typescript 04──函数与类
函数与类 前言 本文章是Typescript系列学习文章,旨在利用碎片时间快速高效上手学习Typescript,也可以对Typescript进行复习知识点,温故知新.如果感兴趣的话~ 欢迎关注, 后续 ...
- 3、TypeScript 函数
目录 1. 函数的基本使用 2. 函数参数的处理 3. 构造函数 4. 函数重载 参数类型不同: 参数类型不同: 1. 函数的基本使用 介绍 函数是JavaScript应用程序的基础.它帮助你实现抽象 ...
- class括号里的object_Python入门 类class 基础篇
记住一句话:类是模板,而实例则是根据类创建的对象. 我初学时对类的理解是从类的字面上,可以片面的认为它是一个种类,它是相似特征的抽像,也就是相似的东西,可以把相似特征的事务抽象成一个类.(事务可以是具 ...
最新文章
- python二维列表排序
- 5毛钱搞一个2.4GHz射频信号探测器
- 用SSE加速CPU蒙皮计算
- Avast I Love You
- java enum转ini_JAVA中用XML实现INI文件格式的解决方
- python网课推荐-python网课什么平台好
- mysql源码包和二进制包_Linux下MySQL安装(二进制包和源码包)
- 趣图:程序员桌面对比,iOS vs 安卓
- php 调用redfish,Huawei iBMC 通过redfish接口设置KVM key登录html5远程控制台操作记录
- node mysql商城开发_GitHub - crouse/nideshop: NideShop:基于Node.js+MySQL开发的开源商城(服务端)...
- 人的一生,到底在追求什么呢?
- mysql 1138_mysql ERROR 1138: Invalid use of NULL value
- python educoder苹果梨子_Python实现201909-2(小明种苹果(续))满分代码,带注释...
- 腾讯优图开源项目全景图!
- Linux终端共享分屏神器tmux
- 必应暗藏戏精模式,拿捏名人说话语气口头禅!官方还自推三种个性供挑选
- intent跳转和转场动画
- 泛型方法的定义与使用
- Linux常用环境软件安装(提供对应安装包)
- HashMap 中 hash 冲突的解决方法及原理分析
热门文章
- 创建群晖共享文件夹,并进行电脑访问
- dellemc服务器中文语言设置,美版windows10系统设置中文语言的方法
- 2022第三届全国大学生网络安全精英赛练习题(1)
- Java如何将文件打包成Zip、Rar压缩包
- 阿里云的这群疯子 (共勉)
- C++之char , signed char , unsigned char(转)
- 9008 能 解锁BL_【Android取证】一部锤子手机引起的解锁事件
- php怎么将中文翻译成英文,PHP将中文翻译成拼音
- 干货 | 携程机票Sketch插件开发实践
- 必应(bing)搜索跳转到百度解决方法