【发布时间】:2017-08-18 14:57:48
【问题描述】:
我偶然发现了一个带有一些交集类型函数签名的打字稿定义文件。它们来自文件index.d.ts中的@types/cropppie:
result(options: ResultOptions & { type: 'base64' }): Promise<string>;
result(options: ResultOptions & { type: 'html' }): Promise<HTMLElement>;
result(options: ResultOptions & { type: 'blob' }): Promise<Blob>;
result(options: ResultOptions & { type: 'canvas' }): Promise<HTMLCanvasElement>;
result(options?: ResultOptions): Promise<HTMLCanvasElement>;
我无法使用type: 'base64' 调用函数result,因此打字稿编译器将返回值正确识别为Promise<string>。
当被调用时
const opts = new ResultOptions(...);
result({...opts, ...{type: 'base64'}}).then(data => ...);
typescript 编译器将data 识别为HTMLCanvasElement,但确实是一个base64 编码的字符串。
有人能指出如何正确传递参数,以便打字稿编译器将data 识别为字符串吗?
非常感谢。
【问题讨论】:
标签: typescript