所以我在学习Angular 2和typescript.

我即将编写一个模拟服务,如果服务成功获取对象,它(我相信)应该返回一个promise ,如果发生任何事情,它应该返回一个错误.

我try 过以下代码,但看起来它不是typescript的编写语法.

更新代码:

saveMyClass(updatedMyClass: MyClass){
        //saving MyClass using http service
        //return the saved MyClass or error
        var savedMyClass : MyClass = someLogicThatReturnsTheSavedObject(updatedMyClass);
        if(isSomeCondition)
            return Promise.reject(new Error('No reason but to reject'));
        else
            return new Promise<MyClass>(resolve => {setTimeout( ()=>resolve(savedMyClass),1500  )}  );
    }

但令我惊讶的是,typescript抱怨"在返回表达式中没有最常见的类型".

正确的代码应该是什么?这样,如果返回了正确的MyClass,我就可以在组件上使用,如果服务中存在错误,则可以反映错误.

谢谢

推荐答案

将整个函数体嵌入到Promise构造函数中被认为是一种很好的做法,因此如果发生任何错误,它将被转换为拒绝.在这种情况下,我相信它也解决了你的问题.

saveMyClass(updatedMyClass: MyClass) {
    return new Promise<Package>((resolve, reject) => {
        //saving MyClass using http service
        //return the saved MyClass or error
        var savedPackage : Package = updatedPackage;
        if (isSomeCondition) {
            throw new Error('No reason but to reject');
        }

        setTimeout( () => {
            resolve(savedPackage);
        }, 1500);
    });
}

Typescript相关问答推荐

通用默认值触发依赖通用约束变量的错误

属性的类型,该属性是类的键,其值是所需类型

如何根据模板类型实现不同的模板函数行为?

Material UI / MUI系统:我如何告诉TypeScript主题是由提供程序传递的?

如果字符串文字类型是泛型类型,则用反引号将该类型括起来会中断

TypeScrip界面属性依赖于以前的属性-针对多种可能情况的简明解决方案

表单嵌套太深

如何使用Geojson模块和@Types/Geojson类型解析TypeScrip中的GeoJSON?

如何在Typescript 中组合unions ?

如何在Vue中使用Enum作为传递属性的键类型?

TypeScrip泛型类未提供预期的类型错误

如何编写在返回函数上分配了属性的类型安全泛型闭包

为什么&Quot;元素隐式具有';Any';类型,因为...即使我已经打字了,也不能作为索引显示错误吗?

为什么在泛型方法中解析此promise 时会出现类型错误?

如何提取具有索引签名的类型中定义的键

有没有一种简单的方法可以访问Keyboard Shortcuts JSON文件中列出的每个命令的显示名称(标题)?

确保财产存在

断言同级为true或抛出错误的Typescript函数

如何将 MUI 主题对象的自定义属性与情感样式组件中的自定义props 一起使用?

覆盖高阶组件中的 prop 时的泛型推理