我有一个使用打字稿3.7.2的项目,每次在数组vs代码上使用“ find”方法时,不会将“ undefined”显示为可能的返回类型。
interface Repository<T, TID> {
get: (id: TID) => T | undefined;
}
class CustomerRepository implements Repository<Customer, string> {
private customers: Customer[];
constructor() {
this.customers = [
{
id: "ID1",
name: "Generic Customer 1",
age: 30
},
{
id: "ID2",
name: "Generic Customer 2",
age: 40
},
{
id: "ID3",
name: "Generic Customer 3",
age: 50
}
]
}
get(id: string): Customer | undefined {
return this.customers.find(customer => customer.id === id);
}
}
我在存储库上调用“ get”方法还是在存储库内调用“ this.customers.find”都没关系,它仍然不会显示“ undefined”作为可能的返回类型。 这段代码将在运行后立即编译然后崩溃:
const customer = customerRepo.get("ID4");
console.log(customer.id);
这是我的tsconfig.json文件:
{
"compilerOptions": {
"target": "es5",
"module": "es6",
"allowJs": true,
"sourceMap": true,
"outDir": "./dist",
"lib": ["dom", "es6", "dom.iterable", "scripthost"],
"noImplicitAny": true
},
"exclude": [
"./node_modules/**/*",
"definitions"
]
}
答案 0 :(得分:1)
undefined
中指定了null
选项,否则 strictNullChecks
和tsconfig
被联合中的其他类型吸收。有关所有选项,请参见docs。
如果添加选项undefined
将出现在返回类型中。