0Pricing
TypeScript Academy · 课时

类型推断与 any 和 unknown 的区别

了解 TypeScript 如何推断类型、any 与 unknown 的区别,以及 const 如何改变推断结果。

类型推断与 any 和 unknown 的区别 是 CoddyKit 上的免费 TypeScript Academy 课时。 这是第 2 节课,共 3 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 TypeScript Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 TypeScript Academy 课程共包含 3 节课。

简介

目标:了解 TS 如何根据值推断类型,并比较 any 与 unknown 在安全性方面的差异。

使用 let 与 const 进行推断

类型推断:let 会推断出较宽泛的类型(number)。const 会推断出字面量类型("TS")。

let count = 5;       
 // inferred number
const title = "TS"; 
// inferred literal type "TS"
console.log(count, title);

as const

as const 会保留字面量类型,并将值冻结为只读。它适用于枚举和配置数组。

const colors = ["red", "green", "blue"] as const;

// type is readonly ["red","green","blue"]

console.log(colors);

any 类型

any 会禁用类型检查。它提供了自由度,却会失去安全性:错误可以通过编译,并在运行时导致崩溃。

let flexible: any = 42;

lexible = "hello";

flexible.nonexistentMethod(); 

// no error at compile time!

unknown 类型

unknown 会强制您在使用前检查类型。它比 any 更安全,因为您不能不经检查就随意调用方法。

let input: unknown = "hello";

// Must narrow before use

if (typeof input === "string") { 
    console.log(input.toUpperCase());
}

使用时机

建议:大多数变量优先使用类型推断。在需要清晰表达时使用显式注解。避免使用 any;类型尚未确定时,优先使用 unknown。

any 与 unknown 检查

快速检查:any 和 unknown 的主要区别是什么?

回顾

回顾:TS 会自动推断类型。const 会收窄为字面量类型,as const 会锁定值。any 会禁用安全检查;unknown 会强制执行检查。

常见问题解答

「类型推断与 any 和 unknown 的区别」课时是免费的吗?

是的 — 「类型推断与 any 和 unknown 的区别」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 TypeScript Academy 课程的其余内容,请升级到 CoddyKit PRO。 TypeScript Academy 课程共包含 3 节课。

「类型推断与 any 和 unknown 的区别」这节课中我会学到什么?

了解 TypeScript 如何推断类型、any 与 unknown 的区别,以及 const 如何改变推断结果。 你通过在浏览器中直接运行的动手代码来练习 TypeScript Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 TypeScript Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 TypeScript Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 3 节。

「类型推断与 any 和 unknown 的区别」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 TypeScript Academy 课中编写并运行代码吗?

能。每节 TypeScript Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 基本类型与类型注解
  2. 类型推断与 any 和 unknown 的区别
  3. 联合类型与字面量类型(基础类型收窄简介)
← 返回 TypeScript Academy