基础数据类型
export {}
var bols:boolean=true;
bols=false;
var num:number=123;
console.log('num==>'+num);
var str:string='我是字符串';
console.log('str==>'+str);
var arr1:number[]=[12,34,65];
var arr2:Array<number>=[98,49];
let arr3:any[]=[123,'dsadsad',true];
var tuple:[number,string]=[123,'this is me'];
enum flag1 {green=1,red='dfdsfs',pink=8}
let f:flag1=flag1.red;
console.log('f==>'+f)
enum flag2 {green=1,red,pink}
let g:flag2=flag2.red;
console.log('g==>'+g)
const enum flag3 {green,red,pink}
console.log('flag3', flag3.green)
let an:any=123;
let anarr:any[]=[123,'dsadsad',true];
console.log('anarr==>'+anarr[1],'an==>'+an);
var oBtn:any=document.getElementById('btn');
oBtn.style.color="red";
var u:number | undefined;
console.log(u);
function fn1():void{
console.log('fn1');
}
fn1();
function fn2():number{
return 123;
}
fn2();
函数
expoet {}
function fn1():void{
console.log('fn1');
}
fn1();
var nfn1=function():void{
console.log('nfn1');
}
nfn1();
function fn2():number{
return 123;
}
fn2();
var nfn2=function():number{
return 123;
}
console.log( nfn2() );
var argum=function(name:string,age:number):void{
console.log('我的名字是'+name+',年龄是'+age+'岁');
}
argum('狄仁杰',56);
var argum1=function(name:string,age?:number):void{
console.log('我的名字是'+name);
}
argum1('狄仁杰');
var argum2=function(name:string,age:number=18,color:string):void{
console.log('我的名字是'+name+',年龄是'+age+'岁'+',颜色是'+color);
}
argum2('狄仁杰',5,'red');
var argum3 : (a:number, b:number) => number = function(x:number, y:number):number {
return x + y
}
console.log(argum3(100, 100))
function buildName(firstName: string, ...restOfName: any[]) {
return firstName + " " + restOfName.join(" ");
}
let employeeName = buildName("Joseph", "Samuel", "Lucas", "MacKinzie");
console.log(employeeName);
let suits = ["hearts", "spades", "clubs", "diamonds"];
function pickCard(x: {suit: string; card: number; }[]): number;
function pickCard(x: number): {suit: string; card: number; };
function pickCard(x:any): any {
if (typeof x == "object") {
let pickedCard = Math.floor(Math.random() * x.length);
return pickedCard;
}
else if (typeof x == "number") {
let pickedSuit = Math.floor(x / 13);
return { suit: suits[pickedSuit], card: x % 13 };
}
}
let myDeck = [{ suit: "diamonds", card: 2 }, { suit: "spades", card: 10 }, { suit: "hearts", card: 4 }];
let pickedCard1 = myDeck[pickCard(myDeck)];
console.log("card: " + pickedCard1.card + " of " + pickedCard1.suit);
let pickedCard2 = pickCard(15);
console.log("card: " + pickedCard2.card + " of " + pickedCard2.suit);
接口
expoet {}
interface fullName{
firstName:string;
lastName:string;
age?:number;
}
function getName(obj:fullName){
if (obj.age) {
console.log('我的名字是:'+obj.lastName+obj.firstName+',我的年龄是:'+obj.age+'岁')
} else {
console.log('我的名字是:'+obj.lastName+obj.firstName)
}
}
let nameObj1={
firstName:'辉',
lastName:'赖',
age:28
}
let nameObj2={
firstName:'忠',
lastName:'黄'
}
getName(nameObj1)
getName(nameObj2)
interface point{
readonly x:number;
readonly y:number;
}
let po:point={x:10,y:8};
interface searceFun{
(name:string,age:number):string
}
let search:searceFun=function(str:string,num:number):string{
return `桥的名字是:${str},至今已有${num}年`
}
console.log(search('武汉长江大桥',20))
interface currentTime{
currentTime:Date;
}
interface setTime {
setTime(d:Date):void;
}
interface Eat {
eat(food: string):void
}
class Food implements Eat {
constructor() {}
eat(f:string) {
console.log(`吃了${f}`)
}
}
class Clock implements currentTime, setTime{
currentTime:Date;
constructor(date:Date){
this.currentTime=date;
}
setTime(date:Date){
this.currentTime=date;
console.log(this.currentTime.toLocaleString())
}
}
let clock=new Clock(new Date());
console.log(clock.currentTime.toLocaleString())
clock.setTime(new Date('2018/6/12 20:15:39'))
泛型
expoet {}
function indeity<T>(name:T):T{
return name
}
console.log(indeity<string>('小黄'))
console.log(indeity('小黄'))
function loggingIdentity<T>(arg: T[]): T[] {
console.log(arg.length);
return arg;
}
console.log(loggingIdentity([123]))
function identity<T>(arg: T): T {
return arg;
}
let myIdentity: <T>(arg: T) => T = identity;
let myIdentity2: {<T>(arg:T):T} = identity;
console.log(myIdentity(123))
console.log(myIdentity2('理化'))
console.log(identity(456))
interface GenericIdentityFn2 {
<U>(arg:U):U
}
function identity2<T>(arg:T):T{
return arg
}
let oj:GenericIdentityFn2=identity2;
console.log(oj('见覅啥的回复'))
interface GenericIdentityFn3<U> {
(arg:U):U
}
function identity3<T>(arg:T):T{
return arg
}
let oj2:GenericIdentityFn3<string>=identity2;
console.log(oj2('sdfg '))
class GenericNumber<T> {
zeroValue: T;
constructor(zeroValue:T){
this.zeroValue=zeroValue;
}
add(){
console.log(this.zeroValue)
}
}
let myGenericNumber = new GenericNumber<number>(123);
myGenericNumber.add()
类
class Person{
name:string;
age?:number;
constructor(name:string,age?:number){
this.name=name;
this.age=age;
}
getName():void{
console.log(this.name)
}
setName(name:string):void{
this.name=name;
}
getAge():any{
if(this.age){
return this.age
}
}
}
let p=new Person('赖辉')
p.getName()
p.setName('武则天')
p.getName()
class Web extends Person {
constructor(name:string,age?:number){
super(name,age);
}
getString(){
console.log(super.getAge())
}
getName(){
console.log('这是子类的')
}
}
let w=new Web('黄忠',65);
w.getName()
w.getString()
类的三种修饰符
class pubilcOne {
public game:string;
constructor(game:string){
this.game=game+'lol';
}
runGame():void{
console.log('公有变量自己本身类里的:'+this.game);
}
}
let one=new pubilcOne('绝地求生');
one.runGame()
one.game = '光遇'
console.log('公有定义的变量从外部访问:'+one.game)
one.runGame()
class publicTwo extends pubilcOne{
constructor(game:string){
super(game)
}
sonGame():void{
console.log('公有变量子类获取父类的:'+this.game);
}
}
let two=new publicTwo('王者荣耀');
two.sonGame();
two.runGame();
console.log('==================================================')
class protectedOne {
protected game:string;
constructor(game:string){
this.game=game;
}
runGame():void{
console.log('受保护的变量自己本身类里的:'+this.game);
}
}
let three=new protectedOne('武则天');
three.runGame();
class protectedTwo extends protectedOne{
protected age?:number;
constructor(name:string,age?:number){
super(name);
this.age=age;
}
jiehsao():void{
if (this.age) {
console.log('受保护的变量子类获取父类里的:我的名字是'+this.game+',我的年龄是'+this.age+'岁')
} else {
console.log('受保护的变量子类获取父类里的:我的名字是'+this.game)
}
}
}
let four=new protectedTwo('狄仁杰', 18);
four.jiehsao();
console.log('==================================================')
class privatedOne {
private name:string;
constructor(name:string){
this.name=name;
}
runGame():void{
console.log('私有的变量自己本身类里的:'+this.name);
}
}
let five= new privatedOne('小猪佩奇')
five.runGame();
class privatedTwo extends privatedOne{
constructor(name:string){
super(name)
}
getName():void{
}
}
let six= new privatedTwo('小猪佩奇');
six.getName();
console.log('==================================================')
class readonlyOne{
readonly name:string;
constructor(name:string){
this.name=name;
}
}
let seven = new readonlyOne('黄忠');
console.log(seven.name)
类的静态属性和存取器
class Persons{
static hisname:string='黄忠';
age:number;
constructor(age:number){
this.age=age;
}
getAge():void{
console.log(Persons.hisname+'的年龄是:'+this.age)
}
static getName():void{
console.log('历史人物的名字是:'+Persons.hisname)
}
}
let eight= new Persons(56);
console.log(Persons.hisname)
Persons.getName()
eight.getAge();
class Employee{
private _fullName:string;
constructor(name:string){
this._fullName=name;
}
get fullName():string{
return this._fullName;
}
set fullName(newName:string){
this._fullName=newName;
}
eat(){
console.log(this.fullName+'在吃东西')
console.log(this._fullName+'在吃东西')
}
}
class Look extends Employee{
constructor(name:string){
super(name)
}
eat(){
console.log(this.fullName+'在吃东西')
}
}
let employ=new Employee('辉');
console.log(employ.fullName)
employ.fullName='少';
console.log(employ.fullName)
employ.eat()
let look=new Look('雪');
look.eat()