npm.io
3.0.13 • Published 3 months ago

ts-type

Licence
ISC
Version
3.0.13
Deps
3
Size
286 kB
Vulns
0
Weekly
0
Stars
5

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

安裝 / Installation

# npm
npm install ts-type

# yarn
yarn add ts-type

# pnpm
pnpm add ts-type

範例 / Examples

ITSOverwrite
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

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

npm install @types/bluebird ts-type
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

export declare function t1(this: string, a: number): Promise<number>

export declare let t1_this: ITSUnpackedThisFunction<typeof t1>;

// => t1_this is string
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
}
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/ 目錄。

For detailed type utility documentation, see the docs/ directory.

分類指南 / Category Guide

文件與教學 / Documentation & Tutorials

Keywords