>node -v ⫎↲
>npm -v
切源操作(npm install nrm -g),查看可用源 (nrm ls),使用某个源(nrm use xxx)
Node配置
npm config set prefix "D:\Program Files\nodejs\node_global"
npm config set cache "D:\Program Files\nodejs\node_cache"
查询: npm config ls
新建系统变量
变量名: NODE_HOME
变量值: node安装根目录
系统变量的PATH添加三个路径:
%NODE_HOME%
%NODE_HOME%\node_cache
%NODE_HOME%\node_global
node Window系统新建环境变量
变量名:NODE_PATH
变量值:D:\Program Files\nodejs\node_global\node_modules
nrm解决:
npm install -g nrm open@8.4.2 --save
查看typescript版本: tsc -v
tsc 报错解决:
1.管理员身份运行windows PowerShell
2.在终端执行:get-ExecutionPolicy,显示Restricted
3.在终端执行:set-ExecutionPolicy RemoteSigned
4.在终端执行:get-ExecutionPolicy,显示RemoteSigned
ECMAScript定义:
7种原始类型:Boolea, Null, Undefined Number Biglnt String Symbol. 值不可变。
对象类型:Object
let 名:类型 = 值
unddefined 和 null是子类型 let num: number = undefined
let notSure: any = 任意类型值 加入神奇的万金油any传任何值都不报错。(同时也就丧失了Typescript的类型检查功能) notSure.getName()
Array:[数组]
function test(){
arguments.length //arguments对象只拥有数组的长度、序值
}
let arr: number[] = [1,2,3] //同一数组类型声明
arr.push(3)
let user: [string, number] = ['boo', 30] // 元组:限定数据类型的数组
user.push("只能是元组定义了的类型之一") //联合类型
interface接口
//interface接口 规范 Object 的长相。用interface关键字
interface XYZ {
readonly id: number; //只读属性用关键子readonly。
name: string;
age?: number; // 【 ? 】可选属性用关键符?
}
let boo: XYZ = { //定义的变量必须跟接口规定的一样多,才不报错。
id: 1,
name: 'bo',
}
Function 函数:
const add = (x:number, y:number, z?:number): number =>{ //输入参数定义类型,返回值也定义类型
if(typeof z === 'number'){ //可选参数 ?必须在最后序位
return x+y+z
}else{
return x + y
}
}
let add2: (x:number, y:number, z?:number) => number = add //不是箭头函数,定义类型
interface XX { // 用interface关键字定义函数类型
(x:number, y:number, z?:number): number
}
let add3: XX = add // add3引用 XX 的定义。
Typescript 提供的 type inference :
一个变量提供给一个函数时,这个函数就自动获取变量类型。
①类型推论: let str = 'str' //str就自动赋值string类型。
②union types 联合类型:【 | 】。
③类型断言:【 as 】
④type guard 类型守护:【 typeof 】自动缩小联合类型的范围
// union types 联合类型:
let numberOrString: number | string
numberOrString.valueOf() //联合类型符【 | 】后只能访问共有的方法
//类型断言 as
function getLength(input: string | number): number{
const str = input as string
if(str.length){
return str.length
} else {
const number = input as number
return number.toString().length
}
}
//type guard类型守护:
function getLength2(input: string | number): number {
if(typeof input == 'string') {
return input.length
} else {
return input.toString().length
}
}