当前位置: 首页 > news >正文

APP网站怎么做大型网站建设平台

APP网站怎么做,大型网站建设平台,网站的布局怎么做,湖南至诚建设机械有限公司网站注意注意!!!本文介绍的是最新的TypeScript4的重要语法 第一部分:TypeScript的简介 TypeScript 是由微软开发的一款开源的编程语言,TypeScript 是 Javascript 的超集,遵循最新的 ES6、ES5 规范&#xff0c…

注意注意!!!本文介绍的是最新的TypeScript4的重要语法

第一部分:TypeScript的简介

TypeScript 是由微软开发的一款开源的编程语言,TypeScript 是 Javascript 的超集,遵循最新的 ES6、ES5 规范,TypeScript 扩展了 JavaScript 的语法。TypeScript 更像后端 Java、C#这样的面向对象语言,可以让 JavaScript 开发大型企业项目。谷歌也在大力支持 Typescript 的推广,谷歌的 angular2.x+ 就是基于 Typescript 语法,最新的 Vue 、React 也可以集成 TypeScript。Nodejs 框架中的 Nestjs、midway 中用的就是 TypeScript 语法。
关于如何安装TypeScript的请参考前文哦……

第二部分:TypeScript4数据类型

小编总结出一共有12种类型(如有纠错,可以在评论区留言哦)。分别是:
1、number类型

let num: number = 100
console.log(num)

2、string类型

let str: string  'Hello'
console.log(str)

3、boolean类型

let flag: boolean = true
console.log(falg)

4、null类型

let n: null = null
console.log(n)

5、undefined类型

let u: undefined = undefined
console.log(u)

6、数组类型

let arr: number[] = [1, 2, 3, 4, 5]
console.log(arr)// 或者使用泛型定义数组(后面会学到泛型)
let arr2: Array<number> = [1, 2, 3, 4, 5]
console.log(arr2)

7、元组类型

let user: [string, number] = ["小黄", 20]
console.log(user)

8、any类型

let flag: any = 1
flag = 'Hi'
flag = true
console.log(flag)

9、void类型(表示没有任何类型,通常用于定义函数的时候函数没有返回值)

function print(): void {console.log("执行了,但是没有返回值!")
}
print()

10、never类型(表示没有任何类型,通常用于定义抛出错误的函数类型)

function error(): never {throw new Error('抛出错误了')
}

11、枚举类型
第一种情况:只有标识符没有赋值,那么属性的值就是该属性的下标

enum Flag {first,second,third
}
let a: Flag = Flag.first
console.log(a)  //值为0

第二种情况:如果标识符已经赋值,那么属性的值就是被赋的值

enum Flag {first,second = 200,third
}
let b: Flag = Flag.second
console.log(b)  //值为200

12、组合类型

let flag: number | string = 100
flag = 'Hello'
console.log(flag)

第三部分:TypeScript4函数

首先,我们先来看看函数的格式,函数通常有两种格式
函数格式一:

function 函数名(参数列表): 返回值类型 {函数体……[return 返回值]
}

函数格式二:

let 函数名 = function(参数列表): 返回值类型 {函数体……[return 返回值]
}

重点!函数的参数类型:
1、必选参数

function getInfo(name: string, age: number): string {return `${name} --- ${age}`
}
console.log(getInfo('张三', 18))  //正确
console.log(getInfo('张三'))  //错误
console.log(getInfo(18))  //错误

2、可选参数
注意!!!可选参数必须放到最后面

function getInfo(name: sqtring, age?: number): string {return `${name} --- ${age}`
}
console.log(getInfo('张三', 18))  //正确
console.log(getInfo('张三'))  //正确
console.log(getInfo(18))  //错误

3、默认参数

function getInfo(name: string, age: number = 20): string {return `${name} --- ${age}`
}
console.log(getInfo('张三', 18))  //正确
console.log(getInfo('张三'))  //正确
console.log(getInfo(18))  //错误

4、剩余参数
注意!!!剩余参数必须放到最后面

function sum(...result: number[]): number {let sum = 0for (let i = 0; i < result.length; i++) {sum += result[i]}return sum
}
console.log(sum(1, 2, 3, 4, 5, 6))
function sum(init: number, ...result: number[]): number {let sum = initfor (let i = 0; i < result.length; i++) {sum += result[i]}return sum
}
console.log(sum(100, 1, 2, 3, 4, 5, 6))

第四部分:TypeScript4的类

1、类的定义

class Person {name: string  //属性,前面省略了public关键词constructor(n: string) {  //构造函数,实例化类的时候触发的方法this.name = n  //使用this关键字为当前类的name属性赋值}run(): void {  //方法console.log(this.name+ "在跑步")}
}
var p = new Person("张三")
p.run()

2、类的继承
类的继承:在 TypeScript 中要想实现继承使用 extends 关键字,只要一旦实现了继承关系,那么子类中便拥有了父类的属性和方法,而在执行方法过程中,首先从子类开始找,如果有,就使用,如果没有,就去父类中找。类的继承只能单向继承。

class Person {name: string  //父类属性,前面省略了public关键词constructor(n: string) {  //构造函数,实例化父类的时候触发的方法this.name = n  //使用this关键字为当前类的name属性赋值}run(): void {  //父类方法console.log(this.name + "在跑步")}
}//中国人这个类继承了人这个类
class Chinese extends Person {age: number  //子类属性constructor(n: string, a: number) {  //构造函数,实例化子类的时候触发的方法super(n)  //使用super关键字调用父类中的构造方法this.age = a  //使用this关键字为当前类的age属性赋值}speak(): void {  //子类方法super.run()  //使用super关键字调用父类中的方法console.log(this.name + "说中文")}
}
var c = new Chinese("张三", 28)
c.speak()

3、类的修饰符
TypeScript 里面定义属性的时候给我们提供了 三种修饰符。
(1)public:公有类型,在当前类里面、子类、类外面都可以访问;
(2)protected:保护类型,在当前类里面、子类里面可以访问,在类外部没法访问;
(3)private:私有类型,在当前类里面可以访问,子类、类外部都没法访问。

注意!!!如果属性不加修饰符,那么就是默认公有(public)

4、类的静态属性
静态属性:被静态修饰符修饰的属性就是静态属性,静态属性可以通过类名直接调用。

class Person {name: string  //属性,前面省略了public关键词static sex: string = "男"  //被静态修饰符static修饰的属性constructor(n: string) {  //构造函数,实例化类的时候触发的方法this.name = n}run(): void {  //方法console.log(this.name+ "在跑步")}
}
console.log(Person.sex)

5、类的静态方法
也是很简单的,静态方法可以通过类名直接调用。

class Person {name: string  //属性,前面省略了public关键词static sex: string = "男"  //被静态修饰符static修饰的属性constructor(n: string) {  //构造函数,实例化类的时候触发的方法this.name = n}run(): void {  //方法console.log(this.name + "在跑步")}static print(): void {  //被静态修饰符static修饰的方法// console.log('姓名:' + this.name)  //错误console.log('性别:' + Person.sex)  //正确// this.run()  //错误}
}
Person.print()

6、抽象类
TypeScript 中的抽象类:它是提供其他类继承的基类,不能直接被实例化。

abstract关键字定义抽象类和抽象方法,抽象类中的抽象方法不包含具体实现并且必须在派生类(也就是其子类)中实现,abstract抽象方法只能放在抽象类里面。

我们常常使用抽象类和抽象方法用来定义标准。

//动物抽象类,所有动物都会跑(假设),但是吃的东西不一样,所以把吃的方法定义成抽象方法
abstract class Animal {name: stringconstructor(name: string) {this.name = name}abstract eat(): any  //抽象方法不包含具体实现并且必须在派生类中实现run() {console.log(this.name + "会跑")}
}class Dog extends Animal {constructor(name: string) {super(name)}eat(): any {  //抽象类的子类必须实现抽象类里面的抽象方法console.log(this.name + "吃骨头")}
}
var d: Dog = new Dog("小狼狗")
d.eat()class Cat extends Animal {constructor(name: string) {super(name)}eat(): any {  //抽象类的子类必须实现抽象类里面的抽象方法console.log(this.name + "吃老鼠")}
}
var c: Cat = new Cat("小花猫")
c.eat()

第五部分:TypeScript4接口

学过Java的同学应该明白接口的干嘛的,没学过也没关系,也是很简单的东西,不要方啦。
接口的用途就是对行为和动作进行规范和约束,跟抽象类有点像,但是,接口中不能有方法体,只允许有方法定义。
接口主要有以下几种:
1、属性类型接口

//这个是一个属性类型接口
interface FullName {firstName: string;secondName: string;
}function printName(name: FullName) {console.log(name.firstName + "--" + name.secondName)
}//传入的参数必须包含firstName、secondName
var obj = {firstName: '张',secondName: '三'
};
printName(obj)

2、函数类型接口

//以下是一个函数类型接口
interface encrypt {(key: string, value: string): string;
}var testFunc1: encrypt = function (key, value) {return key + "----" + value
}
console.log(testFunc1("name", "zhangsan"))var testFunc2: encrypt = function (key, value) {return key + "====" + value
}
console.log(testFunc2("name", "lisi"))

3、可索引型接口

//以下是一个可索引型接口,对数组的约束
interface UserArr {[index: number]: string
}
var arr1: UserArr = ["aaa", "bbb"]
console.log(arr1[0])//以下是一个可索引接口,对对象的约束
interface UserObj {[index: string]: string
}
var arr2: UserObj = { name: '张三', age: '21' }
console.log(arr2)

4、类类型接口

//以下是一个类类型接口,用于对类的约束
interface Animal {name: string;eat(str: string): void;
}class Dog implements Animal {name: stringconstructor(name: string) {this.name = name}eat() {console.log(this.name + "吃大骨头")}
}
var d = new Dog("小狼狗")
d.eat()class Cat implements Animal {name: stringconstructor(name: string) {this.name = name}eat(food: string) {console.log(this.name + "吃" + food)}
}
var c = new Cat("小花猫")
c.eat("大老鼠")

5、接口的继承

//人接口
interface Person {eat(): void;
}//程序员接口
interface Programmer extends Person {code(): void;
}//小程序接口
interface Web {app(): void;
}//前端工程师
class WebProgrammer implements Programmer, Web {public name: stringconstructor(name: string) {this.name = name}eat() {console.log(this.name + "下班吃饭饭")}code() {console.log(this.name + "上班敲代码")}app() {console.log(this.name + "开发小程序")}
}
var w = new WebProgrammer("小李")
w.eat()
w.code()
w.app()

第六部分:TypeScript4泛型

软件工程中,我们不仅要创建一致的定义良好的API,同时也要考虑可重用性。 组件不仅能够支持当前的数据类型,同时也能支持未来的数据类型,这在创建大型系统时为你提供了十分灵活的功能。在像C#和Java这样的语言中,可以使用泛型来创建可重用的组件,一个组件可以支持多种类型的数据,这样用户就可以以自己的数据类型来使用组件。

通俗理解:泛型就是解决类、接口、方法的复用性、以及对不特定数据类型的支持
泛型主要有以下两种:
1、泛型类

//类的泛型
class MinClas<T>{public list: T[] = []add(value: T): void {this.list.push(value)}min(): T {var minNum = this.list[0]for (var i = 0; i < this.list.length; i++) {if (minNum > this.list[i]) {minNum = this.list[i]}}return minNum}
}
//实例化类并且制定了类的T代表的类型是number
var m1 = new MinClas<number>()
m1.add(11)
m1.add(3)
m1.add(2)
console.log(m1.min())
//实例化类并且制定了类的T代表的类型是string
var m2 = new MinClas<string>()
m2.add('c')
m2.add('a')
m2.add('v')
console.log(m2.min())

2、泛型接口

//泛型接口
interface ConfigFn<T> {(value: T): T;
}function getData<T>(value: T): T {return value
}
var myGetData: ConfigFn<string> = getData
console.log(myGetData('20'))

第七部分:命名空间

命名空间:在代码量较大的情况下,为了避免各种变量命名相冲突,可将相似功能的函数、类、接口等放置到命名空间内,同Java的包、.Net的命名空间一样,TypeScript的命名空间可以将代码包裹起来,只对外暴露需要在外部访问的对象,命名空间内的对象通过export关键字对外暴露。

namespace A {interface Animal {name: string;eat(): void;}export class Dog implements Animal {name: stringconstructor(theName: string) {this.name = theName}eat(): void {console.log(`${this.name} 吃狗粮。`)}}export class Cat implements Animal {name: stringconstructor(theName: string) {this.name = theName}eat(): void {console.log(`${this.name} 吃猫粮。`)}}
}namespace B {interface Animal {name: string;eat(): void;}export class Dog implements Animal {name: stringconstructor(theName: string) {this.name = theName}eat(): void {console.log(`${this.name} 吃狗粮。`)}}export class Cat implements Animal {name: stringconstructor(theName: string) {this.name = theName}eat(): void {console.log(`${this.name} 吃猫粮。`)}}
}
var ac = new A.Cat("小花")
ac.eat()var bc = new B.Cat("小花")
bc.eat()

好啦,以上就是本次关于最新的TypeScript4的重点总结啦,并不是太难的,希望对大家有所帮助,后续还会继续出文更新有关TS的其他内容哦,欢迎大家在下方留言^^

http://www.khdw.cn/news/10692.html

相关文章:

  • 石狮住房和城乡建设局网站泰安百度推广电话
  • 网站网络推广教程在哪里找专业推广团队
  • 做一个大型网站北大青鸟培训机构靠谱吗
  • 做英文网站seo搜索引擎优化心得体会
  • 贵阳网站开发公司推荐疫情防控数据
  • 郑州 网站报价百度搜索关键词热度
  • 常熟建设局网站首页百度官方推广
  • 温州专业网站建设网站查询
  • 个人网站号备案吗百度快照收录
  • 中山市西区网站制作seo基础知识考试
  • 网站建设 任务国内设计公司前十名
  • 广州网站优化流程产品推广方案要包含哪些内容
  • 网站收录很好没排名核心关键词和长尾关键词举例
  • 网站建设需要哪些网络技术网站建设公司推荐
  • c asp.net 做网站百度指数入口
  • 最好的扁平化网站北京seo站内优化
  • 链接网站怎么做网站改进建议有哪些
  • 网站设计面试问题windows优化大师的特点
  • 美团网网站建设 费用东莞网站自动化推广
  • 怎么在阿里云建网站seo网站优化师
  • 郴州旅游seo是什么职位的简称
  • 网站建设方案服务公司网站申请流程
  • 高大上网站设计长沙网站推广有哪些啊
  • 点击图片进入网站要怎么做今天头条新闻
  • 公司网站建设哪家好制作网页链接
  • 搜索引擎大全兰州seo优化公司
  • 大连模板网站制作2021小说排行榜百度风云榜
  • 静态网站建设毕业论文广告投放平台系统
  • 做电商平台网站有哪些内容百度用户服务中心人工电话
  • 什么网站有项目做软文写作方法