Typescript:类型'Promise<{}>'不能赋值给类型'Promise<void>'

15

我有以下函数:

let templateLoader = (onDidFinishLoad : Function, onDidFailLoad : Function) =>
    (url : string) : Promise<void> => 
        new Promise(    
            (resolve,reject) => {
                mainWindow.loadURL(url);
                mainWindow.webContents.once(
                    'did-finish-load',
                    () => { 
                        onDidFinishLoad(resolve);
                    }  
                );  
                mainWindow.webContents.once(
                    'did-fail-load', 
                    (event,errorCode,errorDescription) => {  
                        onDidFailLoad(reject,errorDescription); 
                    }  
                );   
            } 
        ); 

我遇到了以下编译错误:

ERROR in [at-loader] ./app/loaders.ts:9:9 TS2322: 类型 'Promise {}' 不能赋值给类型 Promise void。类型 '{}' 不可分配给类型 'void'。

1个回答

27

它的工作原理是将: Promise<void>修改为: Promise<any>,

或者将new Promise强制转换为new Promise<void>


1
我收到了 Type declaration of 'any' loses type-safety. Consider replacing it with a more precise type. 的提示。 - jrwren
@jrwren 如果您知道确切的类型,可以将两者替换为 Promise<YourType> - Val
@jrwren如果您正在尝试使其成为可重用组件,并且它可以具有两种类型的提交类型,即<DataOne>或<DataTwo>,该怎么办?先感谢您。 - Roger Perez
@RogerPerez 执行 Promise<DataOne | DataTwo> - Val

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接