TS基础用法

简介: TS基础用法

TS是JS的超集,JS所拥有的,TS都有。

JS是弱类型语言,而TS是强类型语言,有了TS加持,JS应用会变得更加稳定且强大。

许多新项目,如果选择VUE3或React进行开发时,大多都会带上TS。

TS是前端领域大势所趋,每一个前端开发工程师都不应该忽略它

基础类型

let name: string
let age: number
let isVip: boolean
//变量声明时,加上一个类型
name = '234'
age = 234
isVip = true
//使用变量时,类型必须是前面定义好的

数组类型

// 写法一
let arr: number[] = [234, 15, 1]
let arr2: boolean[] = [true, false]
// 写法二
let arra: Array<string> = ['234', 'sdges']
let arrb: Array<number> = [234, 124, 7456]
let arrc: Array<boolean> = [false, false, true]

联合类型

let joint1: (number | string | boolean)[]
joint1 = ['2345', 23423, true]
let joint2: (number | null)
joint2 = null

类型别名

// type用来定义类型别名,类型别名建议大写开头
type Alias1 = (string | number)
type Alias2 = number[]
let a1: Alias1 = '245'
let a2: Alias2 = [234]
//使用类名别名,方便复用

函数类型

function add(n1: number, n2: number): number {
    return n1 + n2
}
let addFn = add(1, 3)
console.log('当前打印---', addFn)   //4

箭头函数

const jt = (n1: number, n2: number): number => {
    return n1 - n2
}
console.log('当前打印---', jt(5, 2))    //3
console.log('当前打印---调用number类型自带的方法', jt(9, 2).toFixed(9))    //7.000000000

函数类型别名

// 定义一个别名
type AddFn = (num1: number, num2: number) => number
// 使用别名AddFn
const add2: AddFn = (num1, num2) => {
    return num1 + num2
}
console.log('当前打印---add2', add2(10, 20))  //30

viod特殊类型,用于标记函数没有返回值

const greet = (msg: string): void => {
    console.log('当前打印---', 'Hello,' + msg)  //Hello,程心
}
greet('程心')
const temp = (): void => {
    console.log('当前打印---', '云天明')  //云天明
}
temp()

 函数可选参数,参数可传可不传,即参数名后面加?

// 必选参数不能位于可选参数后面
const optional = (msg: string, num?: number) => {
    console.log('当前打印---', `${msg},${num}`)  //234,999
}
optional('234', 999)

对象类型

// 空对象
let obj1: {} = {}
// 有一属性的对象
let obj2: { name: string } = {
    name: '24'
}
// 有多个属性或方法的对象,注意定义多个属性的类型时用分号隔开
let obj3: { name: string; age: number; sayHi(): void } = {
    name: 'sf',
    age: 234,
    sayHi() {
        console.log('当前打印---', 'Hi')
    },
}
// 对象类型别名
// 考虑到复用,对象类型用类型别名存储
// 这里面的方法为可选,为下面做铺垫
type ObjType = { name: string; age: number; isVip: boolean; sayHi?(): void }
let newObj: ObjType = {
    name: 'fff',
    age: 0,
    isVip: true,
    sayHi() {
    },
}
console.log('当前打印---', newObj)
// 方法如果是可选的,那么就有可能是为undefined,那么undefined调用括号就会报错
// 解决方案:加判断,或者短路运算,或者可选链操作符
newObj.sayHi && newObj.sayHi()
// 可选链操作符,跟上面&&是一样的作用
newObj.sayHi?.()

 接口类型

// 只能用来定义对象类型别名
// interface和type的相比,少了等于号
// type存什么都可以,interface只能存对象
interface Person {
    name:string
    gender:string
    age:number
    habby?():void
    love?:string
}
let t:Person = {
    name:'34',
    gender:'342',
    age:9
}
console.log('当前打印---',t)

 接口继承

interface Point2D{
    x:number
    y:number
}
interface Point3D extends Point2D {
    z:number
}
// extends关键字实现继承
let point:Point3D = {
    x:444,
    y:333,
    z:88
}

 type实现接口继承

// 与interface的区别在于,extends换成了&符号
type Point2D2 ={
    x:number
    y:number
}
type Point3D2 = Point2D2 & {
    z:number
}
let typePoint:Point3D2 = {
    x:43,
    y:234,
    z:9
}

元组类型

// TS的元组其实就是特殊的数组:
// 1.元组的长度是固定的
// 2.元组的每一项类型也是固定的
// 数组
let arr5:number[]
arr5 = [23,23,4]
// 元组
// 定义了两个number,那么arr6数组只能有两个元素
let arr6:[number,number]
arr6 = [234,235]

TS 类型推论

// 如果没有定义类型,TS会根据初始值推断出类型,鼠标悬停即可看到
let h = 'rte'
// 重新赋值为string,可以
h = 'sf'
// 重新赋值为number,会报错
// h = 234
// 注意:能省略--类型的情况
// 一、声明变量或形参的时候,提供初始值
// 二、主动写了函数return返回值


相关文章
|
7月前
|
JavaScript 前端开发 API
第9期 一文读懂TS的(.d.ts)文件
第9期 一文读懂TS的(.d.ts)文件
149 0
|
JavaScript
ts常用的语法
ts常用的语法
|
JavaScript 前端开发 API
一文读懂TS的(.d.ts)文件
一文读懂TS的(.d.ts)文件
4040 0
|
6月前
|
JavaScript
|
JavaScript 前端开发 开发者
ts详解以及相关例子(一篇带你详细了解ts)
ts详解以及相关例子(一篇带你详细了解ts)
176 1
|
7月前
|
JavaScript
使用TS的一些基础知识
使用TS的一些基础知识
87 0
|
JavaScript 前端开发 开发者
ts知识点
ts知识点
60 0
|
JavaScript 前端开发 程序员
ts - 类 进阶1
ES6 类的使用
|
JavaScript 索引
ts - 类 进阶2
ES7类的使用
|
JavaScript
TS基本语法 TS中的泛型
TS基本语法 TS中的泛型