JSPM

  • Created
  • Published
  • Downloads 167274
  • Score
    100M100P100Q157610F
  • License ISC

add some typescript type and re-export some build-in typescript type

Package Exports

  • ts-type
  • ts-type/index.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (ts-type) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

README

add some typescript type and re-export some build-in typescript type

see index.d.ts

install

npm install ts-type

demo

ITSOverwrite

export interface A1
{
    s: string
}

export type A2 = ITSOverwrite<A1, {
    s: number,
}>
export declare let a2: A2;
// a2.s is number

ITSOverwriteReturnType

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

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

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 ''
}

other

docs