[英]How to make Typescript throw runtime error?
import { Component } from '@angular/core';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
constructor() {
console.log(this.getColor(1000))
}
getColor(c:String) {
return c
}
}
我的文本編輯器在 1000 下方放了一條紅線,上面寫着:“1000”類型的參數不可分配給“字符串”類型的參數。ts(2345)
好的...但是我的應用程序仍在執行,我可以在控制台上看到結果。
有什么方法可以使 Angular 和/或 Typescript 在這種情況下防止執行?
您的瀏覽器不知道 TypeScript,它只執行轉譯的 javascript 代碼。
但是在您的情況下,構建過程(由 Angular 制作)會引發錯誤,您將無法部署您的應用程序。
在開發模式下,會出現 typescript 錯誤,但出於實際原因您仍然可以執行該應用程序
Typescript 只是警告您,有些事情是不對的。 它仍然可以編譯,您仍然可以運行代碼並且它可以工作,但它並不打算那樣工作。
那么如何檢查輸入是否正確呢?
function example (color: string): void {
if (typeof color !== 'string') {
throw Error() // you can put your error message in here
}
}
您可以為--noEmitOnError
配置編譯器:
如果報告了任何錯誤,請不要發出輸出。
盡管這本身不會“阻止執行”,但它會避免 Typescript 故意允許您在檢測到類型錯誤時發出的傾向。 來自 TypeScript 開發負責人 RyanCavanaugh在Typescript 問題 828中,其中創建了該命令行標志:
我們絕對想要編譯器在出現類型錯誤時可以發出的行為。 這是遷移現有 JavaScript 的關鍵場景——您將 some.js 文件重命名為 .ts,得到一些類型錯誤,但希望在重構它以消除類型錯誤時繼續編譯它。 從這個意義上說,它們是“警告”; 我們不能保證您的程序不能僅僅因為它有類型錯誤而工作。
也就是說,我們認識到這並不總是您想要的行為。 增量構建經常會因此而混亂。 我們需要一些東西來解決這種情況。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.