typescript介绍
ts是按照面向对象语言的语法重新封装的js
按照后端语言封装的ES6
基础类型
布尔值、数字、字符串、数组、元组、枚举、any、void、null和undefined、never、object
类型定义
- 布尔型:最简单的数据类型只有简单的true/false值;语法:let isDone: boolean = false;
- 数字:所有数字都是浮点数。 这些浮点数的类型是
number
let decLiteral: number = 6;
let hexLiteral: number = 0xf00d;
let binaryLiteral: number = 0b1010;
let octalLiteral: number = 0o744;
- 字符串:使用
string表示文本数据类型;语法:let name: string = "bob";
- 数组:元素类型后面接上
[],表示由此类型元素组成的一个数组;
let list: Array<number> = [1, 2, 3];
- 元组:元组类型允许表示一个已知元素数量和类型的数组,各元素的类型不必相同
let x: [string, number];
- 枚举:
enum类型是对JavaScript标准数据类型的一个补充
enum Color {Red, Green, Blue} let c: Color = Color.Green;
- any:我们会想要为那些在编程阶段还不清楚类型的变量指定一个类型,那么我们可以使用
any类型来标记这些变量:
let notSure: any = 4;
notSure = "maybe a string instead";
notSure = false;
function getname():void{
console.log(names)
}
- never:
never类型表示的是那些永不存在的值的类型;never类型是任何类型的子类型,也可以赋值给任何类型
- object:
object表示非原始类型,也就是除number,string,boolean,symbol,null或undefined之外的类型。
接口
TypeScript的核心原则之一是对值所具有的结构进行类型检查。 它有时被称做“鸭式辨型法”或“结构性子类型化”。
在TypeScript里,接口的作用就是为这些类型命名和为你的代码或第三方代码定义契约。
interface ogj{
age:number
}
function getnum(obj:{age:number}){
console.log(obj)
}
let person={
names:'lily',
age:20
}
getnum(person)
- 在定义接口时可是定义内容是否可不写,在age后面加上?
- 一些对象属性只能在对象刚刚创建的时候修改其值。 你可以在属性名前用
readonly来指定只读属性:
- 函数类型:为了使用接口表示函数类型,我们需要给接口定义一个调用签名。 它就像是一个只有参数列表和返回值类型的函数定义。参数列表里的每个参数都需要名字和类型。
函数类型语法
interface fun {
(a: number, b: string)
}
function show(fun) {
console
}
function text(a, b) {
return a + b;
}
show(text(1,'aaa'))
interface datas {
days: Date
}
class d1 implements dateB {
days: Date;
constructor(age: number,names:string){}
}
类
class Person {
names: string;
constructor(name: string) {
this.names = name;
}
showmsg() {
console.log("hello" + this.names)
}
}
var p1=new Person("lily");
p1.showmsg()