Interface
type Method = 'get' | 'post'interface EasyFetchRequestConfig {url: stringmethod?: Methoddata?: anyparams?: anyheaders?: anyresponseType?: XMLHttpRequestResponseTypetimeout?: number}function test(config: EasyFetchRequestConfig): void {console.log(config.url)}test({ url: 'test', num: 2 }) // 会报错,因为num没有定义test({}) // 报错,url属于必传test({ url: 'test' }) // 编译通过
混合工厂
interface EasyFetch {getURL(url: string): string}/** 混合工厂接口 */interface EasyFetchInstance extends EasyFetch {(start: number): string}function createInstance(): EasyFetchInstance {const instance = function(start: number): string {return 'test'}instance.getURL = function (url: string): string { return url };return instance}const easyFetch = createInstance()easyFetch(2)easyFetch.getURL('mmp.xxx')
Type
类型别名
type Method = 'get' | 'post' // 只能2选1interface EasyFetchResponse {status: string}type EasyFetchPromise = Promise<EasyFetchResponse>function xhr(): EasyFetchPromise {return Promise.resolve({status: 'success'})}xhr().then(status => {console.log(status)})
