在ruby环境中,有一个常量定义的RUBY_VERSION
在没有访问底层系统的情况下,我可以在脚本中自我引用的类型记录是否等效?如果是我自己的计算机运行代码,我已经意识到,我可以通过运行系统命令tsc -V
来检查编译器版本,比如本地场景,或者通过节点env运行said命令,但这不是我想要的。我更喜欢下面的例子
console.log(TS_VERSION)
// printVersion.ts
在我的例子中,执行环境是分离的(leetcode),因为我在web表单中运行代码,并且它们不公开它们正在运行的类型记录的哪个版本。不过,他们确实让我打印出来。目标是节点14.x
我检查了这个leetcode页面,但它只提供节点的版本,而不是类型记录编译器版本。
更新在联系leetcode之后,他们已经更新了他们的版本页面以包含ts版本。
发布于 2020-10-18 17:29:35
您可以问编译器本身,它根据您感兴趣的内容导出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'];
但是,在leetcode中编译它会出现一个没有[object Object]
的错误,因此我们知道版本至少为4.0.1。
不幸的是,将其缩小到4.0.1到4.0.2之间可能是不可能的。版本更改的只有标记为固定的问题与编辑器集成有关,而且由于leetcode没有绑定到类型记录的编辑器服务,所以可能无法判断。
https://stackoverflow.com/questions/64418914
复制相似问题