TypeScript 中文手册 - TypeScript 中文手册 (bootcss.com)
技术选型:
TypeScript及TypeScript在vue3.0项目中的基本使用_vue3 typescript_Jeasu_0908的博客-CSDN博客
TypeScript 是一种由微软开发的自由开源的编程语言,主要提供了类型系统和对 ES6的支持。它是JavaScript的一个超集,扩展了JavaScript的 语法,因此现有的 JavaScript 代码可与TypeScript 一起工作无需任何修改。
TypeScript 设计目标是开发大型应用,它可以编译成纯 JavaScript,编译出来的 JavaScript可以运行在任何浏览器上。 TypeScript 是 Angular2、vue3的开发语言
在TS中允许你为变量指定类型。当你给已定义类型的变量赋值的时候,值的类型不对,便会有错误提示
Typescript 支持类型最大的好处是可读性。 类型可以给开发者更多的信息,是最有价值的文档。类型很好的体现了代码即文档这一思想。
是否使用ts来开发项目?或者说ts有必要吗?----- 根据开发场景,怎么方便怎么来
开发条件:
大型项目,代码量较多
进行封装,组件化开发的时候(有一定开发基础)
开发团队中至少一半的成员对ts要有基本的了解,至少有一个成员对ts相关知识点很熟悉
影响:
对前端来说,需要理解接口(Interfaces)、泛型(Generics)、类(Classes)、枚举类型(Enums)等可能不是很熟悉的知识点,有一定的学习成本。
ty的作用:
基本类型的介绍与适用场景
交叉和联合类型
类型检查机制:推断、断言、保护和守卫
全局类型、类型引入、类型重写、类型合并(interface 和 type 的区别)
安装
npm install -g typescript
验证是否安装成功 :tsc -v(查看typescript的版本)
2.TypeScript安装和运行_typescript怎么运行_艾迪蛋·的博客-CSDN博客
TypeScript及TypeScript在vue3.0项目中的基本使用_vue3 typescript_Jeasu_0908的博客-CSDN博客
类型断言好比其它语言里的类型转换,但是不进行特殊的数据检查和解构。 它没有运行时的影响,只是在编译阶段起作用。
//类型断言有两种形式。 其一是“尖括号”语法:
let someValue: any = "this is a string";
let strLength: number = (someValue).length;
另一个为 as 语法:
let someValue: any = "this is a string";
let strLength: number = (someValue as string).length;
TypeScript及TypeScript在vue3.0项目中的基本使用_vue3 typescript_Jeasu_0908的博客-CSDN博客
函数类型的定义有两点:参数类型、返回值类型
泛型(Generics)是指在定义函数、接口或类的时候,不预先指定具体的类型,而在使用的时候再指定类型的一种特性。
写法是 <变量类型>
let arr: number[] = [1,2,3];
数组泛型
类型推论
typeScript 学习总结(基础篇)_DiuDiu_yang的博客-CSDN博客
原始数据类型:布尔值(boolean)/数值(number)/字符串(string)/null
/undefined
/ES6中的Symbol
类型
定义类型语法:
let varName: type = [对应类型的赋值]; //也可单独赋值
boolean
定义类型)let createByNewBoolean: boolean = new Boolean(1);
PS:使用构造函数Boolean
创造的对象不是布尔值而是一个Boolean
对象。 注意ts:167:5-error
let createByNewBoolean: Boolean = new Boolean(1);
let decLiteral: number = 6;
let hexLiteral: number = 0xf00d;
// ES6 中的二进制表示法
let binaryLiteral: number = 0b1010;
// ES6 中的八进制表示法
let octalLiteral: number = 0o744;
let notANumber: number = NaN;
let infinityNumber: number = Infinity;
编译结果:
var decLiteral = 6;
var hexLiteral = 0xf00d;
// ES6 中的二进制表示法
var binaryLiteral = 10;
// ES6 中的八进制表示法
var octalLiteral = 484;
var notANumber = NaN;
var infinityNumber = Infinity;
TypeScript之interface与type_田小田、的博客-CSDN博客
用interface来描述对象数据的类型(常用于给对象的属性和方法添加类型约束)
在TS中对于对象数据的类型注解,除了使用interface之外还可以使用类型别名来进行注解,作用相似
相同点
不同点
注解对象类型的场景下非常相似,推荐大家使用type, type 更加灵活
1 在项目中安装
yarn add tpyescript --dev
在全局安装:
npm i -g ts-node
2 新建 tsconfig.json文件 ts编译的根目录
{
"compilerOptions": {
"target": "esnext",
"module": "esnext",
"moduleResolution": "node",
"strict": true,
"noLib": false,
"forceConsistentCasingInFileNames": true,
"allowSyntheticDefaultImports": true,
"strictFunctionTypes": false,
"jsx": "preserve",
"baseUrl": ".",
"allowJs": true,
"sourceMap": false,
"esModuleInterop": true,
"resolveJsonModule": true,
"noUnusedLocals": false,
"noUnusedParameters": false,
"experimentalDecorators": true,
"lib": ["dom", "esnext"],
"noImplicitAny": false,
"skipLibCheck": true,
"removeComments": true,
"types": ["webpack-env", "unplugin-vue-define-options"],
"paths": {
"@/*": ["src/*"]
}
},
"include": [
"mock/**/*",
"src/**/*.ts",
"src/**/*.d.ts",
"src/**/*.tsx",
"src/**/*.vue",
"types/**/*.d.ts",
"types/**/*.ts"
],
"exclude": ["node_modules", "dist", "**/*.js", "**/*.md", "src/**/*.md"]
}
3 新建index.ts
运行
ts-node index.ts,