措辞不佳,我不知道该怎么问。
我有一个条件可以评估从远程服务器接收到的数据。如果不是false,则包含一个对象。
interface serverData {
data: boolean|{a: number, b: string, c: number, d: string},
extra: boolean,
}
getRemoteData(): serverData {
return {
"extra": false,
"data": {
a: 15460514569,
b: "mia6bahBai",
c: 2019,
d: 'Lorem Ipsum'
}
}
}
dothings() {
var response = this.getRemoteData()
if(response.data !== false) { // check if type is serverData or false
let obj = new Data(response.data) // Expect serverData
}
}
出于开发目的,response.data
返回一个静态对象,但最终可能返回false
。
打字稿抱怨:
“ true”类型的参数| { 一个号码; b:字符串; c:数字; d: 串; }”不可分配给“ serverData”类型的参数。类型 不能将'true'分配给'serverData'类型。.
打字稿让我感到不安。我有一个条件来减轻错误并根据收到的数据采取正确的措施。打字稿在这里对我有什么期望?
答案 0 :(得分:-1)
我认为
interface serverData {
data: boolean|{a: number, b: string, c: number, d: string},
extra: boolean,
}
应该是
interface serverData {
data: {a: number, b: string, c: number, d: string},
extra: boolean,
}
因为它,您无需声明它是假还是真,而只是额外地做。
答案 1 :(得分:-1)
let obj = new Data(response.data)
问题在于打字稿不知道response.data
的值是true
,false
还是您的“真实数据”;
我建议:
interface RealData {
a: number,
b: string,
c: number,
d: string
}
type ServerData = RealData | false;
interface ServerResponse {
data: ServerData;
extra: boolean;
}
let obj = new Data(response.data as RealData)