TypeScript概览2

62 阅读2分钟

TypeScript概览2

TS 和 JS 的区别是什么

  1. 类型系统:TypeScript 是一种静态类型语言,可以在编译时检查类型错误,避免在运行时出现类型错误,提高代码的可靠性和稳定性。而 JavaScript 是一种动态类型语言,类型检查在运行时进行,容易出现类型错误。
  2. 语法扩展:TypeScript 在 JavaScript 的基础上扩展了一些语法,比如类、接口、枚举等,使得代码更具有面向对象的特性。
  3. 工具支持:TypeScript 提供了更好的 IDE(集成开发环境)和编辑器支持,可以提供更好的代码补全、智能提示、错误检查等功能,帮助开发者更快速地开发和调试代码。
  4. 生态系统:虽然 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
    }
}