首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >是否可以从远程环境中的ts文件中获取类型文本版本?

是否可以从远程环境中的ts文件中获取类型文本版本?
EN

Stack Overflow用户
提问于 2020-10-18 14:24:34
回答 1查看 114关注 0票数 0

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

在没有访问底层系统的情况下,我可以在脚本中自我引用的类型记录是否等效?如果是我自己的计算机运行代码,我已经意识到,我可以通过运行系统命令tsc -V来检查编译器版本,比如本地场景,或者通过节点env运行said命令,但这不是我想要的。我更喜欢下面的例子

console.log(TS_VERSION) // printVersion.ts

在我的例子中,执行环境是分离的(leetcode),因为我在web表单中运行代码,并且它们不公开它们正在运行的类型记录的哪个版本。不过,他们确实让我打印出来。目标是节点14.x

我检查了这个leetcode页面,但它只提供节点的版本,而不是类型记录编译器版本。

更新在联系leetcode之后,他们已经更新了他们的版本页面以包含ts版本。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-18 17:29:35

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import { version } from 'typescript'
console.log(version)

然而,leetcode并不是一个正常的环境。他们的TS设置不包括正确的模块设置(尽管在Node中运行!)因此,这将产生一个编译器错误,它将不会运行。把any扔进去让它正常工作。在leetcode上运行以下输出4.0.2。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
console.log((require as any)("typescript").version)

即使没有这个,我们也可以做个很好的猜测。试图编译以下作品,这表明最低版本为TS 4.0。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
type A = [1, 2]
type B = [...A]

尝试编译也是有效的--但这是不允许的,而且TS 4.0.3中有固定的,这进一步缩小了范围。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
type A = [1, name: 2]

我们还可以通过检查另一固定发行来判断TS是否比4.0.0更新。试图在4.0.0中编译以下内容会给出一个包含[object Object]的错误消息

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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没有绑定到类型记录的编辑器服务,所以可能无法判断。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64418914

复制
相关文章

相似问题

领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文