【发布时间】:2022-01-15 20:58:36
【问题描述】:
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 对运行时一无所知。它是一个编译器。可能有一种方法可以让 Angular(在运行时确实存在)来做到这一点,我不知道它是否与 React 的 prop-types 等效,但 Typescript 除了不允许您的代码编译之外不会帮助您.
-
@JaredSmith 我在 TypeScript 问题上看到了很多这样的回应,我同意其中一些,但我一直对 TypeScript“在运行时什么都不做”持开放态度。是的,它是一个编译器——输出运行的代码。他们对此并没有走得太远,但枚举是一个完美的例子,我认为在运行时在 javascript 中没有这样的东西,但 TypeScript 正在为你初始化一个 const 对象(在输出代码中)......从技术上讲,它可以处理 OP 的情况——不过我不确定他们是否实现了任何东西。
-
这是我前几天遇到的一个例子(仍然有点过头了)——他们正在用 TypeScript 做一些非常有趣的事情,甚至显示错误消息(在运行时)来自编译器。看到这种东西让我对 TypeScript 可以在输出代码中做什么并影响运行时间保持开放的态度......
-
链接太长了,所以这里是 SO 帖子,链接在第一个答案中 - 这部剧在运行时显示了一些类型错误:stackoverflow.com/questions/58528248/… github 中有一个长线程可供阅读历史:github.com/microsoft/TypeScript/issues/1573
标签: angular typescript