繁体   English   中英

如何让 Typescript 抛出运行时错误?

[英]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 开发负责人 RyanCavanaughTypescript 问题 828中,其中创建了该命令行标志:

我们绝对想要编译器在出现类型错误时可以发出的行为。 这是迁移现有 JavaScript 的关键场景——您将 some.js 文件重命名为 .ts,得到一些类型错误,但希望在重构它以消除类型错误时继续编译它。 从这个意义上说,它们是“警告”; 我们不能保证您的程序不能仅仅因为它有类型错误而工作。

也就是说,我们认识到这并不总是您想要的行为。 增量构建经常会因此而混乱。 我们需要一些东西来解决这种情况。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM