为何Deno运行TypeScript代码时不检测函数类型错误?
问题原因解析
核心原因是Deno 默认运行 TypeScript 时不执行静态类型检查,而 tsc 和 IDE 会严格做类型校验,两者的行为差异导致了这个结果:
tsc与 IDE 的行为:它们基于 TypeScript 的静态类型系统工作,在编译/编码阶段就会检测到add函数要求传入两个number类型参数,但你传入了字符串'2'和数字10,属于类型不匹配,因此抛出错误。Deno 默认运行行为:
deno run默认仅将 TypeScript 代码转译为 JavaScript 后直接执行,跳过了 TypeScript 的静态类型检查步骤。此时代码会按照 JavaScript 的规则运行:字符串与数字相加时,JavaScript 会将数字隐式转换为字符串,执行拼接操作,所以'2' + 10得到结果'210'(你看到的输出210可能是控制台显示时的格式问题,实际为字符串类型)。
如果想要让 Deno 执行类型检查,只需在运行时添加 --check 参数:
deno run --check index.ts
此时 Deno 就会检测到类型不匹配的错误,和 tsc、IDE 的表现一致。
内容的提问来源于stack exchange,提问作者Aditya Mayukh Som
相关产品推荐
相关产品推荐

