TypeScript學習第二天:認識ts的數據類型
- 2022 年 3 月 7 日
- 筆記
- typescript
1,類型總覽
類型 | 例子 | 描述 |
---|---|---|
number | 1、2、3 | 任意數字 |
string | ‘xxx’ | 任意字元串 |
boolean | true / false | 布爾值 |
undefined | const n: undefined = undefined | 一個沒有被賦值的變數 |
null | const n: null = null | 尚未創建的對象 |
object | { name: ” } | 任意對象 |
array | [1, 2, 3] | 任意數組 |
Symbol | let n: symbol = Symbol(‘k’) | 表示獨一無二的值 |
BigInt | let n: bigint = BigInt(9007199254740991) | 內置對象 表示大於253 - 1 的整數 |
字面量 | let a:’hello’ = ‘hello’ | 其本身 |
any | 任意值 | 任意類型的值 |
unknown | 任意值 | 安全類型的any |
void | let a: void = undefined | 沒有值或者undefined |
never | (): never => {} | 永不存在的值 |
tuple | [1, 2, 3] | 元組 固定值和長度的數組 |
enum | enum Color {Red, Green} | 枚舉 用於取值被限定在一定範圍內的場景 |
2,基本類型
2.1,布爾
let isDone: boolean = false
2.2,數字
let isNum: number = 6
2.3,字元串
let name: string = 'bob'
name = 'smith'
let name2: string = `Genez${name}`
2.4,Null
let n: null = null
2.5,undefined
const n: undefined = undefined
2.6,symbol
let n: symbol = Symbol('k')
2.7,bigint
let n: bigint = BigInt(9007199254740991)
3,引用類型
3.1,數組 Array
- 聲明方式一
let list: number[] = [1, 2, 3]
- 聲明方式二
let list: Array<number> = [1, 2, 3]
- 多類型數組
const arr1: (number | string)[] = [1, 'string', 2]
const arr2: Array<any> = [1, 'string', null]
- 使用
type
約束的數組
type T = number | string
const arr: Array<T> = [1, '張三']
- 使用
interface
約束的對象數組
interface Item {
id: number
name: string
isDad: boolean
}
const objectArr: Array<Item> = [{ id: 1, name: 'demo', isGod: true }]
3.2,對象 Object
- 普通對象
const n: object = {
value: '',
size: 20
}
interface
定義
interface Hero {
name: string
age: number
skill: string
skinNum?: number
say(): string // say函數返回值為 string
[keyName: string]: any // 當前Hero可定義任意字元串類型的key
}
const t:Hero = {
name: '999',
age: 20,
skill: '',
say() {
return ''
},
kkk: ''
}
- type定義
type Hero = {
name: string
age: number
skill: string
skinNum?: number
}
- 任意類型
interface AnyObject {
[key: string]: any
}
const t:AnyObject = {
name: '999',
age: 20,
skill: '',
kkk: null,
aaa: undefined
}
3.3,函數 Function
- 普通定義函數
function fn(name: string, size: number, state?: number, text: string = '', ...param: number[]):object {
return {
name,
size
}
}
- 箭頭函數
const fn2: (a: number, b: string) => string = function (a:number, b:string): string {
return ''
}
- 無返回值
const fn2: (a: number, b: string) => void = function (a:number, b:string): void {
console.log(a, b)
}
- 使用interface定義函數
interface SearchFn{
(param1: string, param2: string): boolean
}
const fn3:SearchFn = function(param1, param2) {
return param1 === param2
}
- 不確定參數個數
function pu(array: any[], ...items: any[]) {
items.forEach(function(item) {
array.push(item);
});
}
let a = [];
pu(a, 1, 2, 3);
4,TypeScript新增類型
4.1,元祖 Tuple
元組類型允許表示一個已知元素數量和類型的數組,各元素的類型不必相同,賦值的類型、位置、個數需要和定義(生明)的類型、位置、個數一致。
元組最重要的特性是可以限制數組元素的個數和類型,它特別適合用來實現多值返回,用於保存定長定數據類型的數據。
- 例子
let uple: [string, string, number] = ["zed", "darts", 25]
- 可選元素
let uple: [string, string, number?] = ["zed", "darts"]
- 不定個數
type RestTupleType = [number, ...string[]]
let restTuple: RestTupleType = [666, "Semlinker", "Kakuqo", "Lolo"]
- 只讀
const point: readonly [number, number] = [10, 20]
4.2,枚舉 enum
使用枚舉我們可以定義一些帶名字的常量。 使用枚舉可以清晰地表達意圖或創建一組有區別的用例。
- 例子
enum Enum {
A,
B,
C
}
console.log(Enum.A) // 列印出 0
console.log(Enum.B) // 列印出 0
- 設置初始值
enum Enum {
A = 8,
B,
C
}
console.log(Enum.A) // 列印出 8
console.log(Enum.B) // 列印出 9
- 字元串枚舉,每個都需要聲明
enum Enum {
A = "8號",
B = "9號",
C = "10號"
}
console.log(Enum.A) // 列印出 8號
4.3,Any
在編程階段還不清楚類型的變數指定一個類型,可以使用 any
類型來標記這些變數
- 例子
let notSure: any = 4
notSure = false
notSure = ''
let list: any[] = [1, true, "free"]
list[1] = 100
4.4,Void
void
類型像是與any
類型相反,它表示沒有任何類型。 當一個函數沒有返回值時,你通常會見到其返回值類型是void
- 例子
function warnUser(): void {
console.log("xxxxxxxxx");
}
// 只能為它賦予undefined和null
let unusable: void = undefined
4.5,Never
never類型表示的是那些永不存在的值的類型,拋出異常或者是死循環
- 例子
// 異常
function err(msg: string): never { // OK
throw new Error(msg);
}
// 死循環
function loopForever(): never { // OK
while (true) {};
}
4.6,Unknown
unknown
與any
一樣,所有類型都可以分配給unknown
。與any
的最大區別是: 任何類型的值可以賦值給any
,同時any
類型的值也可以賦值給任何類型。unknown
任何類型的值都可以賦值給它,但它只能賦值給unknown
和any
。
- 例子
let notSure: unknown = 4;
let uncertain: any = notSure; // OK
let notSure: any = 4;
let uncertain: unknown = notSure; // OK
let notSure: unknown = 4;
let uncertain: number = notSure; // Error
4.7,字面量
使用一個字元串字面量類型作為變數的類型
- 例子
let hello: 'hello' = 'hello';
hello = 'hi'; // 報錯
如果看了覺得有幫助的,我是@鵬多多,歡迎 點贊 關注 評論;END
PS:在本頁按F12,在console中輸入document.querySelectorAll(‘.diggit’)[0].click(),有驚喜哦
公眾號
往期文章
- 助你上手Vue3全家桶之Vue-Router4教程
- 助你上手Vue3全家桶之Vue3教程
- 助你上手Vue3全家桶之VueX4教程
- 使用nvm管理node.js版本以及更換npm淘寶鏡像源
- 超詳細!Vue-Router手把手教程
- vue中利用.env文件存儲全局環境變數,以及配置vue啟動和打包命令
- 微信小程式實現搜索關鍵詞高亮
- 超詳細!Vue的九種通訊方式
- 超詳細!Vuex手把手教程
個人主頁