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];
}