Javascript 类型';空';不可分配给类型';XXX和x27;

Javascript 类型';空';不可分配给类型';XXX和x27;,javascript,node.js,typescript,Javascript,Node.js,Typescript,我创建了这些类型 export type Maybe<T> = T | null; hostels: Array<Maybe<Hostel>>; hostel: Hostel; if (hostels && hostels.length > 0) { hostel = hostels[0]; } 一个快速的解决方法是在tsconfig.json(或命令行,或用于配置typescript的任何东西)中禁用str

我创建了这些类型

export type Maybe<T> = T | null;
hostels: Array<Maybe<Hostel>>;
hostel: Hostel;


if (hostels && hostels.length > 0) {
            hostel = hostels[0];
}

一个快速的解决方法是在tsconfig.json(或命令行,或用于配置typescript的任何东西)中禁用
strictNullChecks
,这样您就可以将
null
分配给几乎所有内容,甚至无需将打字设置为
null
。就像所有定义都隐式包含
| null

如果仍然需要启用
stricnullchecks
,则类型必须匹配。与
string
变量只能接收
string
类型相同,
hostel
必须与
Maybe
的类型相同,即
hostel | null
,因此:

export type Maybe<T> = T | null;
hostels: Array<Maybe<Hostel>>;
hostel: Hostel | null;

if (hostels && hostels.length > 0) {
    hostel = hostels[0];
}
导出类型可能=T |空;
宿舍:阵列;
招待所:招待所|空;
如果(hotels&&hotels.length>0){
宿舍=宿舍[0];
}

这个
旅馆:旅馆应该是
hostel:hostel | null
您的列表为
T | null
则第一项应为相同类型。或者您必须将hotel=hotels[0]类型转换为hotel请检查类型脚本断言。hotels[0];
export type Maybe<T> = T | null;
hostels: Array<Maybe<Hostel>>;
hostel: Hostel | null;

if (hostels && hostels.length > 0) {
    hostel = hostels[0];
}