这是角度的新手,而不是经验最丰富的javascript / typescript开发人员。通常是较小的项目。
目前不知道为什么这种比较失败。
function zip ($obj1, $obj2, $rs) { [Linq.Enumerable]::Zip($obj1, $obj2, [Func[Object, Object, Object]]$rs) }
$table_1 = Import-Csv -Delimiter " " -Path .\file1.csv
$table_2 = Import-Csv -Delimiter " " -Path .\file2.csv
zip $table_1 $table_2 { param($t1, $t2) $t1.col3 = $t2.colB }
$table_1 | Export-Csv -Path .\file1.csv -Delimiter " " -Encoding Oem -NoTypeInformation
我得到的数据结构定义为
if(data.success == true) {
//do stuff
}
和
export class RegResponse {
success : boolean;
error : string;
constructor(success: boolean, error: string){
this.success = success;
this.error = error;
}
的数据。成功为真。
console.log
是字符串(由于某种原因)?
但是,如果我尝试对该变量进行字符串比较,则声明该变量将引发不适用于布尔值的操作的错误。
所以我很困惑为什么这不起作用。
这是一个可行的解决方案,但是我不明白为什么明显的第一次比较失败了。
console.log(typeof(data.success))
答案 0 :(得分:4)
您将success
声明为布尔值这一事实并不意味着您的服务将为您返回布尔值。如果端点返回一个字符串,则它是一个字符串。
Typescript用于类型定义,它只是说“我希望在这里有一个字符串,那里是一个布尔值”的一种方式,但是如果源未知,则必须自己进行检查。
分配data.success
时,您可以执行以下操作:
data.success = response.success === 'true';
作为进一步的解决方案,如果您使用的是Angular 4+,则可以仅在Http客户端中指定接口即可实现安全的类型检查系统。
您可以在official guide中阅读更多内容:
getReg() {
// it will return an Observable of RegResponse
return this.http.get<RegResponse>(this.configUrl);
}
但是它不能帮助您转换布尔值中的字符串,如果您期望某些东西并得到其他东西,这只会失败!
答案 1 :(得分:0)
如果“ data.success”仅是true,false,“ true”或“ false”,则可以尝试:if(JSON.parse(data.success)) { //code }