UNPKG

ts-type

Version:

TypeScript 類型工具庫:提供豐富的類型操作工具和重新導出的內建類型 / TypeScript type utility library: provides rich type manipulation utilities and re-exported built-in types

219 lines (140 loc) 3.63 kB
# 基礎類型 / Base Types ## 概述 / Overview 提供常用的基礎類型別名和工具類型,這些類型是整個庫的建構基礎。 Provides commonly used base type aliases and utility types that form the building blocks of the entire library. ## 來源 / Source - [`lib/type/base.ts`](../lib/type/base.ts) - [`lib/generic.ts`](../lib/generic.ts) --- ## 類型列表 / Type List ### ITSArrayListMaybeReadonly **陣列類型:可讀寫陣列或唯讀陣列** ```typescript type StringList = ITSArrayListMaybeReadonly<string>; // type StringList = string[] | readonly string[] ``` --- ### ITSKeys **鍵的類型:符號、字串或數字** ```typescript type Keys = ITSKeys; // type Keys = symbol | string | number ``` --- ### ITSConstructorLike **建構函數類型** ```typescript type MyConstructor = ITSConstructorLike<MyClass>; // type MyConstructor = new (...args: any) => MyClass ``` --- ### ITSValueOrArray **值或陣列:單一值或其陣列** ```typescript type StringOrArray = ITSValueOrArray<string>; // type StringOrArray = string | string[] ``` --- ### ITSValueOrArrayMaybeReadonly **值或可能唯讀的陣列** ```typescript type StringOrList = ITSValueOrArrayMaybeReadonly<string>; // type StringOrList = string | string[] | readonly string[] ``` --- ### ITSPropertyKey **屬性鍵類型:字串或符號** ```typescript type PropKey = ITSPropertyKey; // type PropKey = string | symbol ``` --- ### ITSAnyFunction **任意函數類型** ```typescript type AnyFunc = ITSAnyFunction; // type AnyFunc = (...args: any[]) => any ``` --- ### ITSBasicPrimitive **基本原始類型:數字、字串或布林值** ```typescript type Primitive = ITSBasicPrimitive; // type Primitive = number | string | boolean ``` --- ### ITSNullPrimitive **可為空的原始類型:null undefined** ```typescript type Nullish = ITSNullPrimitive; // type Nullish = null | undefined ``` --- ## 泛型工具 / Generic Utilities ### ITSTypeFunction **類型函數:返回指定類型的函數** ```typescript type MyTypeFunc = ITSTypeFunction<string>; // type MyTypeFunc = (...args: any[]) => string ``` --- ### ITSMapLike **類似 Map 的介面定義** ```typescript interface MyMap extends ITSMapLike<string, number> { get(key: string): number | undefined; has(key: string): boolean; } ``` --- ### ITSSetLike **類似 Set 的介面定義** ```typescript interface MySet extends ITSSetLike<string> { has(value: string): boolean; } ``` --- ### ITSResolvable **可解析的類型:支援直接值或 PromiseLike** ```typescript type AsyncValue = ITSResolvable<string>; // type AsyncValue = string | PromiseLike<string> ``` --- ### ITSArrayLikeWriteable **可寫入的類陣列介面** ```typescript interface MyArrayLike extends ITSArrayLikeWriteable<string> { readonly length: number; [n: number]: string; } ``` --- ## 迭代器類型 / Iterator Types ### ITSIterator **Iterator 類型** ```typescript const iterator: ITSIterator<string> = { next() { return { done: false, value: 'test' }; } }; ``` --- ### ITSIteratorResult **IteratorResult 類型** ```typescript const result: ITSIteratorResult<string> = { done: false, value: 'test' }; ``` --- ## Proxy 類型 / Proxy Types ### ITSProxify **將物件的屬性包裝為 Proxy** 將每個屬性轉換為具有 getter setter 的物件。 ```typescript interface User { name: string; age: number; } type ProxifiedUser = ITSProxify<User>; // type ProxifiedUser = { // name: { get(): string; set(v: string): void }; // age: { get(): number; set(v: number): void }; // } ```