TypeScript概览2
TS 和 JS 的区别是什么
- 类型系统:TypeScript 是一种静态类型语言,可以在编译时检查类型错误,避免在运行时出现类型错误,提高代码的可靠性和稳定性。而 JavaScript 是一种动态类型语言,类型检查在运行时进行,容易出现类型错误。
- 语法扩展:TypeScript 在 JavaScript 的基础上扩展了一些语法,比如类、接口、枚举等,使得代码更具有面向对象的特性。
- 工具支持:TypeScript 提供了更好的 IDE(集成开发环境)和编辑器支持,可以提供更好的代码补全、智能提示、错误检查等功能,帮助开发者更快速地开发和调试代码。
- 生态系统:虽然 JavaScript 生态系统非常丰富,但是 TypeScript 生态系统也越来越成熟,越来越多的库和框架都提供了 TypeScript 的类型定义文件,可以提供更好的类型支持和代码提示。
总的来说,TypeScript 在 JavaScript 的基础上增加了类型系统和语法扩展,提高了代码的可靠性和可读性,同时也提供了更好的工具支持和生态系统。但是 TypeScript 的学习曲线可能会比 JavaScript 更陡峭,需要更多的学习和适应。
any、unknown、never
any VS unkown
二者都是顶级类型(top type),即任何类型的值都可以赋值给顶级类型变量
let foo: any = 123;
let bar: unkown = 123;
但是,unkown比any的类型检查要严格,any什么检查都不做,unkown需要先类型收窄
const value: unkown = 'hi'
const str: string = value; // 报错
const value: unkown = 'hi'
const str: string = value as string; // 不报错
如果改为any则都报错。所以优先使用unkown类型更安全
never never是底类型,表示不应该出现的类型
interface A {
type: 'a'
}
interface B {
type: 'b'
}
type All = A | B
function handleValue(val: All) {
switch(val.type) {
case 'a':
break
case 'b':
break
default:
const exhaustiveCheck: never = val
break
}
}