仅仅我的用来作笔记,若有不对请指出。 我是看的技术胖的视频,而后本身总结的笔记,想去看视频的同窗,请去 https://jspang.com 另外我的博客:wangxuelong.com 欢迎访问 互踩 javascript
TypeScript是JavaScript 的超集css
适合用于大型应用 或者多人合做html
TypeScript 仍是会像 less sass 同样 会在最后编译成JavaScript 和cssjava
跨平台 且开源 注:js必定要学懂在看node
js库 TS 也可使用web
TypeScript 提供了一些 类 接口 模块 利于组件化开发正则表达式
Vue Ng React 推荐使用TypeScriptnpm
nodejs.org 先安装Node 能够安装最新版 具体百度编程
npm install typeScript -g 安装TS后端
tsc --version 查看版本若是出来讲明安装成功
npm init -y -y表示默认
tsc --init 会生成一个tsconfig.JSON 是用来编译成js文件 的一个文件 eg:有时运行很差使 请删除这个从新下载
npm install @types/node --dev-save 解决模块生名文件问题
而后就能够写文件了
var a:string ="Hello TS";
复制代码
右键编译 转换成js 而后使用 node 文件名.js 出现你打的文字就说明成功
javascript 是弱类型语言 TypeScript是强类型语言 TypeScript有不少类型
没赋值就是undefined
不只能够设置整数类型 也能够设置小数类型 NAN 全称 Not a Number
单引号 双引号都是string类型
true false 只有这两个值 没有0 1
eg:人的类型:男 女 中(:技术胖平常开车 eg: enum REN(一般用大写声明)
enum REN(nan,nv,yao));
console.log(REN.yao);//打印索引下标
enum RENN(nan='男人'.nv='女');
console.log(RENN.nan);//打印男人
复制代码
eg:就是任何类型啥都行 (我感受就是返回js类)
var t:any =10
t=true;
console.log(t);打印true
复制代码
eg:代码的复用
function searchAV(AV:string):string{
return 'search your AV' +AV;
}
var AV:string='010294590';
var result:string =searchAV(AV)
console.log(result);
复制代码
eg: ?是能够不传的参数
function searchAV(AV:string,AVMING?:string):string{
if(AVMING===undefind){
return 'search your AVMING' +AV+AVMING;
}else{
return 'search your AV' +AV;
}
}
var AV:string='010294590';
var result:string =searchAV(AV)
console.log(result);
复制代码
function add(n1:number,n2:number){
return n1+n2;
}
console.log(add(1,2));//打印3
复制代码
var add =function(n1:number,n2:number){
return n1+n2;
}
console.log(add(1,2));//打印3
复制代码
var add =(n1:number,n2:number):number => {
return n1+n2;
}
console.log(add(1,2));//打印4
复制代码
变量得做用域:TypeScript函数划分 函数体内得变量 是封闭得 只在函数体内部起做用
什么是全局变量,局部变量?
函数体外就是全局变量,函数体内得就是局部变量 当重名得时候内部变量不会改变,内部变量引入不了外部变量
var app = function():void{
var abc:string='asd';
console.log(abc); //asd
}
app();
console.log(abc);//报错
复制代码
引用类型
let A ={
name:'wang',
age=12,
webChrom: 'wangxuelong.com',
saysome:function(){
console.log('112233');
}
}
console.log(A.name);
A.saysome();
复制代码
数组 --array String Date RegEXP
let arr:number[] //数值类型
let arr1:Array<string> //字符串类型
let arr2:Array<boolean> //布尔类型
复制代码
字面量赋值法
let arr1:number[] = [];
let arr2:number[] = [1,2,3,4,5];
let arr3:Array<string> = ['aa','bb','cc'];
let arr4:Array<boolean> = [true,false,true];
复制代码
构造函数赋值法
let arr1:number[] = new Array();
let arr2:number[] = new Array(1,2,3,4,5);
let arr3:Array<string> = new Array('aa','bb','cc');
let arr4:Array<boolean> = new Array(true,false,true);
复制代码
坑🕳
let arr5:number[]=[1,2,true]//单一类型 不容许会报错
复制代码
元祖是能够的(不建议使用)
let arr5:[string,number];
arr5=['hello',10]//正确的方法
//arr5=[10,'he']//错误的
复制代码
基本类型字符串,引用类型字符串
let a:string = 'xxbb';//基本类型
let b:String = new String('xxbb')//引用类型 String:'xxbb'
console.log(a.length) //4
复制代码
查找字符串indexOf
let some:string='abcdefg,higklmn';
let find:string='abcdefg'
console.log(some.indexOf(find));//0
console.log(some.lastindexOf(find));//0 找最后一个 出现两次 选最后一次
复制代码
截取字符串 substring()
let some:string='abcdefg,higklmn';
let find:string='abcdefg'
console.log(some.substring(8));//higklmn
console.log(some.substring(8,10));//hi
复制代码
替换字符串 replace()
let some:string='abcdefg,higklmn';
let find:string='abcdefg';
console.log(some.replace('abcdefg','xxbb'));//xxbb,higklmn
复制代码
1 不传值
let d:Date = new Date();
console.log(d); //不是当前中国时区? 不知道为何
复制代码
2 传数字
let d:Date = new Date(1000);//1970-01-01 00:00:00向前数1000毫秒
console.log(d);//
复制代码
3 传字符串
let d:Date = new Date('1970/01/01 00:00:00');
let d1:Date = new Date('1970-01-01 00:00:00');
let d2:Date = new Date('1970-01-01T00:00:00');
console.log(d);//1969-12-31T16:00:00.000Z
console.log(d1);//1969-12-31T16:00:00.000Z
console.log(d2);//1969-12-31T16:00:00.000Z
//这里打印结果 我这TS 时区是不同的 我也不知道为何
复制代码
RegExp string
构造函数声明法
let reg:RegExp = new RegExp("js")//1.匹配字符串 2.修饰符(可选)
console.log(reg);// /js/
复制代码
字面量声明 查找字符串text(string)返回TRUE FALSE exec(string)返回 【查找的东西 位置 内容】
let reg:RegExp = /js/
let findred:string = 'jis is js very good'
console.log(reg.test(findred))//true
复制代码
概念
类:类是对象具体事务的一个抽象
对象:对象时的具体表现
class findgirl{
name:string
age:number
constructor(name:string,age:number){
this.name = name;
this.age = age;
}
sayHello(){
console.log('大马猴');
}
}
let xxbb:findgirl =new findgirl('hxx',18);
console.log(xxbb)//findgirl { name: 'hxx', age: 18 }
xxbb.sayHello()//大马猴
复制代码
public //曝光的 protected //保护的 private //私有的
class DaMahou{
public sex:string
protected name:string
private age:number
public constructor(sex:string,name:string,age:number){
this.name = name
this.age = age
this.sex = sex
}
public sayHello(){
console.log('我叫大马猴');
}
protected sayHxx(){
console.log('hxx');
}
}
var xxbb:DaMahou = new DaMahou('男','xxbb',24)
console.log(DaMahou.sex) //男
console.log(DaMahou.name) //提示收到保护
console.log(DaMahou.age) //报错 私有属性
DaMahou.sayHello()//正常
DaMahou.sayHxx()//报错
复制代码
readonly 只读 不能修改
class findName{
public readonly name:string='xxbb'
}
var man:findName = new findName()
man.name = 'hxx'//报错
复制代码
继承:容许咱们建立一个类(子类),从已有的类(父类)上继承全部的属性和方法,子类能够新建父类中没有的属性和方法。
class b{
console.log(12);
}
extends//继承 a 继承于b
class a extends b {
public xing:string ='asd';
}
复制代码
interface man{
name:string
sex:string
age:number
Dmh?:Boolean
}
let hxx:man = {
name:'hxx',
sex:'nv',
age: '18'
}
console.log(hxx)//{ name: 'hxx', sex: 'nv', age: 18 }
复制代码
接口规范
interface FindDMH{
(name:string,sex:string):boolean
}
let hxx:FindDMH
hxx=function (name:string,sex:string):boolean{
let flag =name.search(sex)
return (flag!=1)
}
console.log(hxx('dmh','男'))//true
复制代码
namespace shuaiGe{
export class Dehua{
public name:string = '刘德华'
talk(){
console.log('我是帅哥刘德华')
}
}
}
namespace bajie{
export class Dehua{
public name:string = '马德华'
talk(){
console.log('我是二师兄马德华')
}
}
}
let dehua1:shuaiGe.Dehua = new shuaiGe.Dehua()
let dehua2:shuaiGe.Dehua = new bajie.Dehua()
dehua1.talk()
复制代码
结语:感受TS 就是 好严谨啊 又get到了一个知识点