helloword
function hello() {
console.log('helloword');
}
hello();
编译:tsc hello.ts
Ts中的数据类型
基本类型
let isDone:boolean =false;//布尔型
let num:number=10;//数值类型
let str:string="123" //字符串定义
function abc():void{//空值void,定义函数不返回任何内容
console.log("void")
}
let u:undefined=undefined;//undefined
let n:null=null;
//以上不可在二次赋值时更改类型
//any可以更改
let x:any='123';
x={}
let s:any;
s=123;
s="123"
数组类型
需要遵循数组定义的类型
let arr:number[]=[1,2,3,4]//数组类型
// 数组泛型的写法
let arr1:Array<number>=[1,2,34,5]
//接口定义数组
interface NumberArray{
[index:number]:number
}
let arr2:NumberArray=[1,2,3,4,5]
类型推断
此时star已经被推断为string类型不可再更改
但undefined可以被重新赋为任意类型
联合类型
//联合类型可以是多种类型
let url:string|number='123'
url=123;
接口定义
//可以对对象有限制
interface Person{
name:string;
age:number;
};
//这两个属性不可缺少,且类型不可变
let tom:Person={
name:'TOM',
age:18
};
interface Animal{
name:string;
age:number;
eat?:string;//可选属性
}
let dog:Animal={
name:'lili',
age:5
}
interface Animal2{
name:string;
age:number;
[eat:string]:any;//任意属性
}
let dog2:Animal2={
name:'lili',
age:5,
eat:22
}
函数
function sum1(x:number,y:number):number {
return x+y;
}
sum1(1,2);
sum1('1',2)//报错
let sum2=function(x:number,y:number):number {
return x+y;
}
//箭头函数
let sum3=(x:number,y:number):number=> {
return x+y;
}
类型别名
type ylstring=string;
let username:ylstring='123'
type yltype=string|number|boolean;
let user1:yltype='hahaha';
user1=true;
type eventname="click"|"mousemove"|"moousedown"
let e1:eventname="click"
枚举类型
enum Days{sun,mon,tue,wed}
console.log(Days['sun']) //0
console.log(Days[0])//sun
let day:Days=Days.sun;
类
class Person{
public username;
public constructor(name){
this.username=name;
}
}
let p:Person=new Person("TOM");
p.username="hahah"
class Person2{
private username;
public constructor(name){
this.username=name;
}
public sayname(){
return username;
}
}
class Person3{
protected username;//可在子类中访问
public constructor(name){
this.username=name;
}
}
class someone extends Person3{
constructor(name){
super(name);
let username=this.username;
}
}
泛型
//泛型
function creatArray<T>(length:number,value:T):Array<T> {
let result:T[]=[];
for(let i=0;i<length;i++){
result[i]=value;
}
return result;
}
function creatArray1<T,U>(length:number,value1:T,value2:U):Array<T|U>{
let result1:T[]=[];
let result2:U[]=[];
for(let i=0;i<length;i++){
result1[i]=value1;
}
return result1;
}
interface CreateArray{
<T>(length:number,value:T):Array<T>;
}
let createarray1:CreateArray=function <T>(length:number,value:T):Array<T> {
let result:T[]=[];
for(let i=0;i<length;i++){
result[i]=value;
}
return result;
}
class Generic<T>{
zerovalue:T;
res(x:T,Y:T){
console.log(x);
return 0;
}
}
let numberobj=new Generic<number>();
numberobj.res(1,2);