在ruby环境中,有一个常量定义的RUBY_VERSION
有没有一个等价的typescript,我可以在脚本内部自我引用,而无需访问底层系统?如果是我自己的计算机在运行代码,我已经意识到,我可以通过运行系统命令tsc -V
来检查编译器版本(针对本地场景(,或者通过节点env运行所述命令,但这并不是我想要的。我更喜欢下面的例子
例如console.log(TS_VERSION)
/printVersion.ts
在我的例子中,执行环境是分离的(leetcode(,因为我在web表单中运行代码,并且它们不公开它们正在运行的typescript的哪个版本。但是他们确实允许我打印到stdout。目标是节点14.x
我已经检查了这个leetcode页面,但它只提供节点的版本,而不是typescript编译器版本
更新联系leetcode后,他们更新了版本页面,以包含ts版本
您可以询问编译器本身,它根据您感兴趣的内容导出version
和versionMajorMinor
。
在正常环境中,这将起作用:
import { version } from 'typescript'
console.log(version)
然而,leetcode不是一个正常的环境。他们的TS设置不包括正确的模块设置(尽管在Node!中运行(,因此这将产生编译器错误,并且不会运行。把any
扔进去就行了。运行以下程序在leetcode上打印出4.0.2。
console.log((require as any)("typescript").version)
即使没有这个,我们也可以做出很好的猜测。正在尝试编译以下作品,这表明最低版本是TS 4.0。
type A = [1, 2]
type B = [...A]
尝试编译它也可以,但这是不允许的,并且在TS 4.0.3中已经修复,这进一步缩小了范围。
type A = [1, name: 2]
我们还可以通过检查另一个已修复的问题来确定TS是否更新到4.0.0。尝试在4.0.0中编译以下内容时,会出现包含[object Object]
的错误消息
interface Foo {
bar: Map<string, string>;
}
declare const foo: Foo;
const nom = foo.bar['nom'];
然而,在没有[object Object]
的情况下,在leetcode上编译它会出现错误,所以我们知道版本至少是4.0.1。
不幸的是,将其缩小到4.0.1和4.0.2之间可能是不可能的。版本更改中唯一被标记为已修复的问题与编辑器集成有关,而且由于leetcode不与TypeScript的编辑器服务绑定,因此可能无法判断。