类型保护错误 TS2532 之后,打字稿对象可能未定义
Typescript Object is possibly undefined after type guard error TS2532
我正在使用 Typescript 2.3.4
、Node.JS 8.0.0
和 Feathers 框架(版本 2.1.1
)。我正在制作一条使用服务的快速路线,当我在 feathers 应用程序上获取单例实例后尝试使用该服务时,Typescript 抛出一个 error TS2532: Object is possible 'undefined' 错误,即使在显式类型保护之后。
routes.ts
import feathers = require('feathers');
export default function(this: feathers.Application) {
const app = this;
app.post(
'/donuts',
async (req, res) => {
const someService = app.service<any>('predefined-service');
if(typeof someService === "undefined" || !authService) {
res.redirect('/fail');
return;
}
try {
let data = someService.create({test: 'hello'});
console.log(data);
res.redirect('/success');
} catch(err) {
res.redirect('/fail');
}
}
}
我也试过写someService!.create...
,但也没用。
interface Service<T> extends events.EventEmitter {
create?(data: T | T[], params?: Params, callback?: any): Promise<T | T[]>;
create
方法本身是可选的(无论出于何种原因)。如果您确定该方法存在,您可以将 !
运算符放在后面,如下所示:
let data = someService.create!({test: 'hello'});
我正在使用 Typescript 2.3.4
、Node.JS 8.0.0
和 Feathers 框架(版本 2.1.1
)。我正在制作一条使用服务的快速路线,当我在 feathers 应用程序上获取单例实例后尝试使用该服务时,Typescript 抛出一个 error TS2532: Object is possible 'undefined' 错误,即使在显式类型保护之后。
routes.ts
import feathers = require('feathers');
export default function(this: feathers.Application) {
const app = this;
app.post(
'/donuts',
async (req, res) => {
const someService = app.service<any>('predefined-service');
if(typeof someService === "undefined" || !authService) {
res.redirect('/fail');
return;
}
try {
let data = someService.create({test: 'hello'});
console.log(data);
res.redirect('/success');
} catch(err) {
res.redirect('/fail');
}
}
}
我也试过写someService!.create...
,但也没用。
interface Service<T> extends events.EventEmitter {
create?(data: T | T[], params?: Params, callback?: any): Promise<T | T[]>;
create
方法本身是可选的(无论出于何种原因)。如果您确定该方法存在,您可以将 !
运算符放在后面,如下所示:
let data = someService.create!({test: 'hello'});