德胜云资讯,添加一些关于程序相关的内容,仅供大家学习交流(https://www.wxclwl.com)
日期:2023/03/24 19:44作者:朱政廷人气:
typescript编程实践
数据类型是指一个数据集以及定义在该数据集上的一组操作。
一、基本类型(重点)
1. javascript基本类型
number
数字类型,用来表示整数、分数和小数,双精度64位浮点值。
let binNum: number = 0b1010 // 二进制 let octNum: number = 0o7531 // 八进制 let decNum: number = 9999 // 十进制 let hexNum: number = 0xF00F // 十六进制boolean
布尔类型,用来表示逻辑真和假,只能取 true和false两个值。
let flag1: boolean = true let flag2: boolean = falsestring
字符串类型,用来表示一个字符序列,用单引号(’)或双引号(”)来表示值,用反引号(`)和${[变量名]}来表示模板字符串。
let title: string = ‘this is a title’ let detail: string = “这是详情” let count: number = 99 let words: string = `标题:${title},详情:${detail},数量:${count}`null
null类型,既是类型又是值,用来表示引用类型的空值。
let obj: object = nullundefined
undefined类型,既是类型又是值,用来表示基本类型未赋值。
let age: number = undefinedsymbol
符号类型,表示独一无二的值,用Symbol()函数生成值,可指定描述。
let sym: symbol = Symbol() let sym1: symbol = Symbol(‘id’) let sym2: symbol = Symbol(‘id’) console.log(sym1 == sym2) // false2. TypeScript新增类型
void
void类型,表示函数无返回值。
function welcome(yourName: string): void { console.log(`Hi, ${yourName}. Welcome to TypeScript world.`) }never
never类型,表示从不出现的值,是null和undefined的子类型。
any
任意类型,可以表示为任意类型,未标注类型时默认为此类型。
let temp: any // undefined类型 temp = ‘TypeScript’ // string类型 temp = 2022 // number类型 temp = true // boolean类型二、引用类型(了解)
1. JavaScript引用类型
object
对象,由静态属性(属性)和动态行为(方法)组成,在面向对象的程序设计方法中将数据及对数据的操作方法封装在一起,作为一个相互依存不可分离的整体——对象。
let obj: object = {} // 定义方式1:{}直接定义 let people = { name: 热巴, age: 18, gender: 女, speak: function() { console.log(`Hi, my name is ${this.name}.`) } } people.speak() // 定义方式2:构造函数+原型方法 function People(name: string, age: number, gender: string): void { this.name = name this.age = age this.gender = gender } People.prototype.speak = function() { console.log(`Hi, my name is ${this.name}.`) } let people = new People(热巴, 18, 女) people.speak()function
函数,为了完成某个小任务的一组语句块。
function [函数名]([形参列表]): [返回类型] { // 函数体 return [返回值] } function add(a: number, b: number): number { let z = a + b return z } console.log(add(1, 2)) // 3array
数组,同类型数据的有序列表。
let arr1: string[] = [‘a’, ‘b’] // 基本类型加[] let arr2: Array<number> = [1, 2] // 使用数组泛型2. TypeScript新增类型
class
类,用于实例化对象,对同类型的对象抽象出其共性形成的类。
class Student { name: string age: number school: string constructor(name: string, age: number, school: string) { this.name = name this.age = age this.school = school } show():void { console.log(`My school is ${this.school}.`) } } let student: Student = new Student(热巴, 18, 清华大学) student.show()interface
接口,类的抽象并非实现,封装属性和方法定义。
interface IShape { width: number, height: number, draw: () => string } let square: IShape = { width: 100, height: 100, draw: () => { console.log(‘drawing’) } }enum
枚举,同种类型数据的有限集合。
enum Color { Red, Green, Blue } let color: Color = Color.Red console.log(color) // 输出0三、类型判断(重点)
1. typeof
typeof是一元运算符,用于判断一个变量或数值的类型,返回值为类型的字符串。
/* Student 为类 student 为类Student的实例 shape 为接口IShape的实例 Color 为枚举 color 为枚举Color的值 */ console.log(typeof(Student)) // function console.log(typeof(student)) // object console.log(typeof(shape)) // object console.log(typeof(Color)) // object console.log(typeof(color)) // number let temp: any console.log(typeof(temp)) // undefined temp = 100 console.log(typeof(temp)) // number temp = true console.log(typeof(temp)) // boolean temp = Hello, world. console.log(typeof(temp)) // string // temp = Symbol() // console.log(typeof(temp)) // symbol temp = null console.log(typeof(temp)) // object temp = {} console.log(typeof(temp)) // object temp = [] console.log(typeof(temp)) // object temp = () => {} console.log(typeof(temp)) // function2. instanceof
简单来说是用于判断一个对象是否为某个类的实例。
准确来说是用于判断一个构造函数的prototype属性所指向的对象是否在另一个被检测对象的原型链上。
console.log(‘abc’ instanceof String) // false 基本类型不是其包装类型的实例 console.log(new String(‘abc’) instanceof String) // true 包装类型实例 console.log(student instanceof Student) // true console.log(student instanceof Object) // true 类默认都继承自Object console.log([] instanceof Object) // true 数组是对象的实例 console.log([] instanceof Array) true // 一个数组对象是Array类的实例 console.log(null instanceof Object) false // null不是对象的实例,但null是object类型