这是我参与更文挑战的第5天,活动详情查看:更文挑战
1.安装node
node -v
npm -v
查看node对应支持的版本,最好node支持在14.0版本以上,npm支持在6.0版本以上
2.全局安装typescript
npm install -g typescript
cnpm install -g typescript
yarn add global typescript
// 查看对应的typescript版本
tsc -v
3.Typescript开发工具vscode自动编译.ts文件
-
创建tsconfig.json文件 tsc --init 生成配置文件
-
并把outDir改成./js
- 版本vscode点击:终端 -> 运行任务 -> tsc:监视-tsconfig.json 然后就可以自动生成代码了
- 选择typescript
- 选择监视-tsconfig.json
[typescript中的数据类型]
typescript中为了使编写的代码更规范,更有利于维护,增加了类型校验,在typescript中主要给我们提供了以下数据类型
布尔类型(boolean)
// es5的写法 (正确写法) ts中(错误写法)
var flag=true
flag=456
// Typescript中为了使编写的代码更规范,更有利于维护,增加了类型校验
// 写ts代码必须指定类型
var flag:boolean=true
// flag=123; //错误
flag=false; //正确
console.log(flag);
数字类型(number)
var num:number=123;
num=456;
console.log(num); /正确/
num = 'str'; //错误
字符串类型(string)
var str:string='this is ts';
str='haha'; //正确
str=true; //错误
数组类型(array)
// 数组类型(array) ts中定义数组有两种方式
// var arr=['1','2']; //es5定义数组
// 1.第一种定义数组的方式
var arr:number[]=[11,22,33];
console.log(arr);
//2.第二种定义数组的方式
var arr:Array<number>=[11,22,33];
console.log(arr)
元组类型(tuple)
// 元组类型(tuple) 属于数组的一种
var arr:Array<number>=[11,22,33];
console.log(arr)
//元祖类型
let arr:[number,string]=[123,'this is ts'];
console.log(arr);
枚举类型(enum)
随着计算机的不断普及,程序不仅只用于数值计算,还更广泛地用于处理非数值的数据。
例如:性别、月份、星期几、颜色、单位名、学历、职业等,都不是数值数据。 在其它程序设计语言中,一般用一个数值来代表某一状态,这种处理方法不直观,易读性差。 如果能在程序中用自然语言中有相应含义的单词来代表某一状态,则程序就很容易阅读和理解。 也就是说,事先考虑到某一变量可能取的值,尽量用自然语言中含义清楚的单词来表示它的每一个值,
这种方法称为枚举方法,用这种方法定义的类型称枚举类型。
enum 枚举名{
标识符[=整型常数],
标识符[=整型常数],
...
标识符[=整型常数],
} ;
enum Flag {success=1,error=2};
let s:Flag=Flag.success;
console.log(s); // 1
enum Flag {success=1,error=2};
let f:Flag=Flag.error;
console.log(f); // 2
enum Color {blue,red,'orange'};
var c:Color=Color.red;
console.log(c); //1 如果标识符没有赋值 它的值就是下标
enum Color {blue,red=3,'orange'};
var c:Color=Color.red;
console.log(c); //3
var c:Color=Color.orange;
console.log(c); //4
var Err;
(function (Err) {
Err[Err["undefined"] = -1] = "undefined";
Err[Err["null"] = -2] = "null";
Err[Err["success"] = 1] = "success";
})(Err || (Err = {}));
var e = Err.success;
console.log(e);
任意类型(any)
null
和 undefined
void类型
typescript中的void
表示没有任何类型,一般用于定义方法的时候方法没有返回值
。
never类型
是其他类型 (包括 null
和 undefined
)的子类型
,代表从不会出现的值
。这意味着声明never的变量只能被never类型所赋值
any类型
let notSure: any = 4
notSure = 'maybe it is a string'
notSure = 'boolean'
// 在任意值上访问任何属性都是允许的:
notSure.myName
// 也允许调用任何方法:
notSure.getName()
总结小练习
let isDone: boolean = false
// 接下来来到 number,注意 es6 还支持2进制和8进制,让我们来感受下
let age: number = 10
let binaryNumber: number = 0b1111
// 之后是字符串,注意es6新增的模版字符串也是没有问题的
let firstName: string = 'viking'
let message: string = `Hello, ${firstName}, age is ${age}`
// 还有就是两个奇葩兄弟两,undefined 和 null
let u: undefined = undefined
let n: null = null
// 注意 undefined 和 null 是所有类型的子类型。也就是说 undefined 类型的变量,可以赋值给 number 类型的变量:
let num: number = undefined
Array和Tuple,数组和元祖
Typescript 文档地址:Array和Tuple
元组中的元素可以是不同类型,而数组只能是相同类型的,除此之外,其它属性与方法与数组一致。
//最简单的方法是使用「类型 + 方括号」来表示数组:
let arrOfNumbers: number[] = [1, 2, 3, 4]
//数组的项中不允许出现其他的类型:
//数组的一些方法的参数也会根据数组在定义时约定的类型进行限制:
arrOfNumbers.push(3)
arrOfNumbers.push('abc')
// 元祖的表示和数组非常类似,只不过它将类型写在了里面 这就对每一项起到了限定的作用
let user: [string, number] = ['viking', 20]
//但是当我们写少一项 就会报错 同样写多一项也会有问题
user = ['molly', 20, true]
// 元组类型定义
let myTuple1: [number, string, boolean] = [1, 'Poplar', true]; // 正确
let myTuple2: [number, string, boolean, any] = [1, 'Poplar', true]; // 长度不符
let myTuple3: [number, string] = [1, 'Poplar', true]; // 长度不符
let myTuple4: [string, number, string] = [1, 'Poplar', true]; // 类型不符
let myTuple5 = [1, 'Poplar', true]; // 类型推断,等同 let myTuple5: (string | number | boolean)[]
let myTuple6 = new Array(1, "ts", false); // 错误:数组中元素类型必须相同
let myTuple7: (string | number | boolean)[] = [1, “ts”, false, 2, true, “js”]; // 正确,长度没有限制
人懒,不想配图,都是自己的博客内容(干货),望能帮到大家
公众号:小何成长,佛系更文,都是自己曾经踩过的坑或者是学到的东西