typescript学习(更新中)

目录

开发环境搭建

复制代码
npm i -g typescript

tsc检查是否安装成功

类型如何声明

typescript 复制代码
// 先声明再赋值
let a: number
a = 1

// 直接赋值
let b = 1
typescript 复制代码
function sum(a: number, b: number): number {
    return a + b
}
console.log(sum(1, 2))

有哪些类型

typescript 复制代码
// 可以使用|连接多个类型
let a: number | string

// unknown类型的变量,不能直接赋值给其他变量
let b: unknown
// a = b // 不可
// 可以下面这样写
a = b as number
a = <number>b

// void用来表示空,以函数为例,就表示没有返回值的函数
function fn(): void {}

// never 表示永远不会返回结果
function fn2(): never {
    throw new Error('报错了!')
}

// object {属性名: 属性值, 属性名:属性值}
// 在属性名后边加上?,表示属性可选的
let c: { name: string, age?: number }
c = { name: 'nihao', age: 18 }
c = { name: 'ni' }
// [propName: string]: any 表示任意类型的属性
let d: { name: string, [propName: string]: any}

// 设置函数结构的类型声明
let e: (a: number, b: number) => number
e = (n, m) => {
    return n + m
}
 
// 数组 类型[] Array<类型>
let f: string[]
let g: Array<string>

// 枚举
enum Gender{
    Male = 0,
    Female = 1
}
let h: { gender: Gender }

// &
let i: { name: string } & { age: number }
i = { name: 'aa', age: 18 }

// 类型别名
type myType = 1 | 2 | 3
let j: myType
let k: myType

编译配置文件

创建一个tsconfig.json

typescript 复制代码
{
    /*tsconfig.json 是ts编译器的配置文件,ts编译器可以根据她的信息来对代码进行编译
    "include": [""],用来指定哪些ts文件需要被编译,一个/*表示任意文件,两个/**表示任意文件目录
    "exclude": 不需要被编译的目录,默认["node_modules","bower_components","jspm_packages"]
    "extends":"目录地址", 继承配置文件,可以把两个配置文件合并
    "files":[xxx.ts,xxx.ts]指定被编译的文件列表
    compilerOptions{} 编译器配置
        target: 用来指定ts 编译后的Es版本,默认ES3,,可选值es3,es5,es6,es2015,es2016,es2017,es2018,es2019,es2020,esnext
        lib[] 用来指定项目中要使用的库,一般不动他
        module: 指定要使用的模块化规范,可选值:none commonjs amd system umd es6 es2015 es2020 exnest
        outDir: 用来指定版以后文件所在的目录
        outFile: 将代码合并成一个文件,设置outFile 后 所有的全局作用域中的代码会合并到同一个文件中。
        allowJs: 是否对js文件进行编译,默认false
        checkJs: 是否检查js文件语法
        removeComments: 编译时是否去除注释
        noEmit: 不生成编译后的文件
        noEmitOnError: 当有错误时不生成编译文件

        // 语法检查的属性
        alwaysStrict: 严格模式,用来设置编译后的文件是否使用严格模式,默认false
        noImplicitAny: 不允许使用隐式any
        noImplicitThis: 不允许使用不明确类型this
        strictNullChecks: 严格的检查空值,
        strict: 所有严格模式的总开关,这个属性一定要写在最上面
    */
    "exclude": [
       	"node_modules"
    ],
    "include": ["./src/**/*"]
    "compilerOptions": {
        "module": "commonjs",
        "target": "ES5",
        "sourceMap": true,
        "outDir": "./dist",
       // "outFile": "./dist/app.js"
       "allowJs": false,
       "checkJs": false,
       "removeComments": false,
       "noEmit": false,
       "noEmitOnError": false,
       "strict": false,
       "alwaysStrict": false,
       "noImplicitAny": false,
       "noImplicitThis": false,
       "strictNullChecks": false
    }
}
相关推荐
yume_sibai18 小时前
大屏数据可视化 - 边框红绿呼吸灯实现详解
前端·信息可视化·typescript
孟无岐1 天前
LayaAir IDE 插件开发入门:用 TypeScript 给编辑器加一个自己的面板
typescript·游戏开发·工程化·编辑器扩展·layaair·ide 插件
shakingWaves1 天前
better auth worker on cloudflare
typescript·cloudflare·auth·better-auth
退休倒计时2 天前
【每日一题】LeetCode 437. 路径总和 III TypeScript
算法·leetcode·typescript
柯克七七2 天前
给老项目加了 TypeScript,本来只想自己爽,结果全公司代码审查标准被我抬高了
前端·vue.js·typescript
yume_sibai2 天前
高德地图骑行导航 API 介绍与使用方法
前端·typescript
子兮曰3 天前
TypeScript 7.0 RC 深度解读:Go 重写完成,10 倍提速,编译器的「奇点时刻」
前端·后端·typescript
BAIGAOa3 天前
不止 React:我开源了一个框架无关的终端键盘引擎,Vue/Svelte 都能用
typescript
小蚂蚁i3 天前
把 TypeScript 内置工具类型彻底搞懂,顺便自己封几个好用的
前端·typescript
爸爸6193 天前
07 ArkTS 基础类型与接口定义:从 TypeScript 到鸿蒙的类型升级
javascript·华为·typescript·harmonyos·鸿蒙系统