UNPKG

ts-type

Version:

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

167 lines (114 loc) 4.34 kB
# ts-type **TypeScript 類型工具庫** / **TypeScript Type Utility Library** 提供豐富的 TypeScript 類型操作工具和重新導出的內建類型,支援雙語註解(繁體中文 + 英文)。 Provides rich TypeScript type manipulation utilities and re-exported built-in types with bilingual comments (Traditional Chinese + English). see [index.d.ts](https://github.com/bluelovers/ws-ts-type/tree/master/packages/ts-type/index.d.ts) ## 安裝 / Installation ```bash # npm npm install ts-type # yarn yarn add ts-type # pnpm pnpm add ts-type ``` ## 範例 / Examples - [demo](https://github.com/bluelovers/ws-ts-type/tree/master/packages/ts-type/test/demo) - ### ITSOverwrite ```ts export interface A1 { s: string } export type A2 = ITSOverwrite<A1, { s: number, }> export declare let a2: A2; // a2.s is number ``` ### ITSOverwriteReturnType 覆寫函數返回值類型 / Overwrite function return type ```ts import { ITSOverwriteReturnType } from '..'; declare function f(a: number): number declare let c: ITSOverwriteReturnType<typeof f, string>; // c is (a: number) => string // c(1).toUpperCase() ``` ### Promise / Bluebird / PromiseLike Promise 相關類型操作 / Promise related type operations ```nodemon npm install @types/bluebird ts-type ``` ```ts export declare function p1(a: number): Promise<number> export declare let p1_v: ITSUnpackedReturnType<typeof p1>; p1_v.toFixed() export declare let p2: ITSWrapFunctionPromise<typeof p1>; export declare let p3: ITSWrapFunctionBluebird<typeof p2>; export declare let p4: ITSWrapFunctionBluebird<typeof p1>; p2(1).then(v => v.toFixed()) p3(1).then(v => v.toFixed()) p4(1).then(v => v.toFixed()) ``` ### this 類型操作 / this Type Operations 操作函數的 this 類型 / Manipulate function's this type ```ts export declare function t1(this: string, a: number): Promise<number> export declare let t1_this: ITSUnpackedThisFunction<typeof t1>; // => t1_this is string ``` ```ts export declare function t2(this: string, a: number): number export declare let t3: ITSOverwriteThisFunction<number, typeof t2>; t3 = function () { this.toFixed() // => this is number return 1 } ``` ```ts interface Function2 extends Function { bind<T extends any, F extends (...args: any[]) => any>(this: F, thisArg: T, ...argArray: any[]): ITSOverwriteThisFunction<T, F>; } export interface t4 extends Function2 { (): string } export declare let t5: t4 export let t6 = t5.bind([] as string[]) t6 = function () { this.includes('') // => this is string[] return '' } ``` ## 文檔 / Documentation 詳細的類型工具說明文件請參閱 [docs/](docs/) 目錄。 For detailed type utility documentation, see the [docs/](docs/) directory. ### 分類指南 / Category Guide - [基礎類型](docs/01-base-types.md) - 基礎類型別名與工具 / Base type aliases and utilities - [內建類型](docs/02-built-in-types.md) - 重新導出的內建類型 / Re-exported built-in types - [函數類型工具](docs/03-function-types.md) - 函數類型操作 / Function type operations - [Promise 類型工具](docs/04-promise-types.md) - Promise 相關類型 / Promise related types - [陣列與元組類型](docs/05-array-tuple-types.md) - 陣列與元組操作 / Array and tuple operations - [物件與記錄類型](docs/06-object-record-types.md) - 物件類型操作 / Object type operations - [字串與數字類型](docs/07-string-number-types.md) - 字串與數字類型操作 / String and number operations - [邏輯類型工具](docs/08-logic-types.md) - 類型層級邏輯判斷 / Type-level logic ## 其他相關專案 / Related Projects - [callable-instance2](https://www.npmjs.com/package/callable-instance2) - create an ES6 class that is callable as a function - https://github.com/piotrwitek/utility-types - ## 文件與教學 / Documentation & Tutorials - http://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-1.html - https://www.tslang.cn/docs/release-notes/typescript-3.1.html#toc-whats-new - https://www.logicbig.com/tutorials/misc/typescript.html ## 相關連結 / Related Links - https://github.com/krzkaczor/ts-essentials - https://github.com/millsp/ts-toolbelt - https://github.com/type-challenges/type-challenges - https://github.com/andnp/SimplyTyped - https://github.com/piotrwitek/utility-types -