是否可以从远程环境中的ts文件中获取typescript版本



在ruby环境中,有一个常量定义的RUBY_VERSION

有没有一个等价的typescript,我可以在脚本内部自我引用,而无需访问底层系统?如果是我自己的计算机在运行代码,我已经意识到,我可以通过运行系统命令tsc -V来检查编译器版本(针对本地场景(,或者通过节点env运行所述命令,但这并不是我想要的。我更喜欢下面的例子

例如console.log(TS_VERSION)/printVersion.ts

在我的例子中,执行环境是分离的(leetcode(,因为我在web表单中运行代码,并且它们不公开它们正在运行的typescript的哪个版本。但是他们确实允许我打印到stdout。目标是节点14.x

我已经检查了这个leetcode页面,但它只提供节点的版本,而不是typescript编译器版本

更新联系leetcode后,他们更新了版本页面,以包含ts版本

您可以询问编译器本身,它根据您感兴趣的内容导出versionversionMajorMinor

在正常环境中,这将起作用:

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的编辑器服务绑定,因此可能无法判断。

最新更新