TS = 带类型检查的 JS
一、常规用法
1. 给变量定义类型
let name: string = "小明"
let age: number = 18
let isStudent: boolean = true
let str: string | null = null
let anything: any = 123
2、给函数定义类型
function sum(a: number, b: number): number {
return a + b
}
sum(1, 2)
sum("1", 2)
function log(msg: string): void {
console.log(msg)
}
3、对象类型
type User = {
name: string
age: number
isVip?: boolean
}
const user: User = {
name: "小红",
age: 20
}
4、数组类型
let strs: string[] = ["a", "b", "c"]
let users: User[] = [
{ name: "a", age: 1 },
{ name: "b", age: 2 }
]
5、接口 interface
interface Product {
id: number
title: string
price?: number
}
const goods: Product = {
id: 1,
title: "苹果"
}
二、最快补 TS 类型
1、从已有对象生成类型
const defaultUser = { name: "test", age: 0 }
type User = typeof defaultUser
const u: User = {
id: 2,
name: "李四",
age: 22,
isVip: true
}
2、从接口返回值自动拿类型
function getUser() {
return fetch("/api/user").then(res => res.json())
}
type User = Awaited<ReturnType<typeof getUser>>
async function fetchData() {
const data = await getUser()
const user: User = data
}
3、批量把类型变可选 Partial
const user = { name: "", age: 0 }
type User = typeof user
type PartialUser = Partial<User>
type PartialUser相当于 type {name?:string,age?:number}