TypeScript基础

这篇博客介绍了TypeScript的基础,包括新增类型、联合类型、类型别名、数组类型、函数定义及可选参数、对象类型和接口。重点讲解了接口的使用,如接口继承,并对比了接口与类型别名的区别。
摘要由CSDN通过智能技术生成

ts的类型:

ts 的常用基础类型分为两种: js 已有类型
复制代码
  1. 原始类型:number/string/boolean/null/undefined/symbol
  2. 对象类型:object(包括,数组、对象、函数等对象)

ts 新增类型

  1. 联合类型
  2. 自定义类型(类型别名)
  3. 接口
  4. 元组
  5. 字面量类型
  6. 枚举
  7. void
  8. any
  9. 等等

原始类型: number/string/boolean/null/undefined/symbol 语法比较简单,基本和 js 差别不大

联合类型:

let 变量: 类型1 | 类型2 | 类型3 .... = 初始值 

let arr1 :number | string = 1 // 可以写两个类型
复制代码

类型别名:

type 别名 = 类型 
type x = string // 定义 
const str1:x = 'abc' 
const str2:string = 'abc'
复制代码

为了让复杂的类型起个别名

数组类型:

// 写法1: 
let 变量: 类型[] = [值1,...]:
let numbers: number[] = [1, 3, 5] // numbers必须是数组,每个元素都必须是数字 
// 写法2: 
let 变量: Array<类型> = [值1,...] 
let strings: Array<string> = ['a', 'b', 'c'] // strings必须是数组,每个元素都必须是字符串

\
复制代码

函数:

定义单个函数

// 普通函数
function 函数名(形参1: 类型=默认值, 形参2:类型=默认值,...): 返回值类型 { }
// 声明式实际写法:
function add(num1: number, num2: number): number {
  return num1 + num2
}

// 箭头函数
const 函数名(形参1: 类型=默认值, 形参2:类型=默认值, ...):返回值类型 => { }
const add2 = (a: number =100, b: number = 100): number =>{
   return a + b
 }
 // 注意: 箭头函数的返回值类型要写在参数小括号的后面
add(1,'1') // 报错
复制代码

统一定义函数格式

const add2 = (a: number =100, b: number = 100): number => {
    return a + b
  }

function add1 (a:number = 100 , b: number = 200): number {
    return a + b
  }
// 这里的 add1 和 add2 的参数类型和返回值一致,
// 那么就可以统一定义一个函数类型
type Fn = (n1:number,n2:number) => number 
const add3 : Fn = (a,b)=>{return a+b }
// 这样书写起来就简单多啦
复制代码

函数返回值类型void

function greet(name: string): void {  console.log('Hello', name)  //}
复制代码

函数-可选参数

可选参数:在可选参数名的后面添加 ?(问号)
function slice (a?: number, b?: number) {
    // ? 跟在参数名字的后面,表示可选的参数
    // 注意:可选参数只能在 必须参数的后面
    // 如果可选参数在必选参数的前面,会报错
    console.log(111);
    
  }
  slice()
  slice(1)
  slice(1,2)
}
复制代码

对象类型-单独使用

const 对象名: {
  属性名1:类型1,
  属性名2?:类型2,
  方法名1(形参1: 类型1,形参2: 类型2): 返回值类型,
  方法名2:(形参1: 类型1,形参2: 类型2) => 返回值类型
} = { 属性名1: 值1,属性名2:值2  }

// 创建类型别名
type Person = {
  name: string,
  age: number
  sayHi(): void
}

// 使用类型别名作为对象的类型:
let person: Person = {
  name: '小花',
  age: 18
  sayHi() {}
}

复制代码

接口

当一个对象类型被多次使用时,有如下两种方式来来描述对象的类型,以达到复用的目的:

  1. 类型别名,type
  2. 接口,interface
interface 接口名  {属性1: 类型1, 属性2: 类型2}
// 这里用 interface 关键字来声明接口
interface IGoodItem  {
	// 接口名称(比如,此处的 IPerson),可以是任意合法的变量名称,推荐以 `I` 开头
   name: string, price: number, func: ()=>string
}

// 声明接口后,直接使用接口名称作为变量的类型
const good1: IGoodItem = {
   name: '手表',
   price: 200,
   func: function() {
       return '看时间'
   }
}
const good2: IGoodItem = {
    name: '手机',
    price: 2000,
    func: function() {
        return '打电话'
    }
}
复制代码

接口和类型 的区别 interface(接口)和 type(类型别名)的对比:

  • 相同点:都可以给对象指定类型

  • 不同点:

    • 接口,只能为对象指定类型。它可以继承。
    • 类型别名,不仅可以为对象指定类型,实际上可以为任意类型指定别名

先有的 interface,后有的 type,推荐使用 type

接口继承

interface 接口2 extends 接口1 {
 属性1: 类型1, // 接口2中特有的类型 
 }

interface a { x: number; y: number }
// 继承 a
// 使用 extends(继承)关键字实现了接口
interface b extends a {
  z: number
}
// 继承后,b 就有了 a 的所有属性和方法(此时,b 同时有 x、y、z 三个属性)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值