安装
全局安装
npm install typescript -g
安装完成之后 配置环境,然后查看是否安装成功
tsc -v
tsc --version
查看是否安装成功
创建项目
tsc --init
安装types/nodes包
npm install @types/node --dev-save
运行一个ts编译后的js文件
node hello.js
函数的定义
function search(age: number, name: string, pre: string = 'pre', stature?: string): string {
console.log(stature)
return '' + age + name;
}
var age: number = 18;
var name1: string = "xiaobai"
var search1 = search(age, name1);
console.log(search1)
function searchArgs(...args: any[]): string {
let result: string = '';
for (let i = 0; i < args.length; i++) {
result += args[i];
}
return result;
}
console.log(searchArgs(1, 2, '小白', 3, 5, true, false, null))
函数定义
//函数声明法
function add(n1:number,n2:number):number {
return n1+n2;
}
console.log(add(1,2))
/*函数表达式*/
var add1 = function (n1:number,n2:number) {
return n1+n2;
}
console.log(add1(1,2))
// 箭头函数
var add2 = (n1:number,n2:number):number=>{
return n1+n2;
}
console.log(add2(1,2))
数组
let jspang = {
name:"name",
website:"baidu.com",
age:18,
say:function () {
console.log('front')
}
}
console.log(jspang.name);
jspang.say()
// array 数组
// let arr1:number[];
// let arr2:Array<string>;
let arr1:number[] = [];
let arr2:number[] = [1,2,3,5,6];
let arr3:Array<string> = ["1","1","1","1",];
let arr4:Array<boolean> = [true,false,false,false];
let arr5:Array<string> = new Array("1","1","1","1",)
let arr6:Array<boolean> = new Array(true,false,false,false)
// 元祖
let x :[string,number]
x = ['hello',111]
类
class Demo11 {
name: string;
age: number;
constructor(name: string, age: number) {
this.name = name;
this.age = age;
}
say() {
console.log(this.name)
console.log(this.age)
}
}
let demo11 = new Demo11("xiaobai",20);
console.log(demo11);
demo11.say()
面向对象 - 类的修饰符
class Demo12 {
public sex:string;
protected name:string;
protected age:number;
public constructor(name:string,age:number,sex:string) {
this.sex = sex;
this.name = name;
this.age = age;
}
public say(){
console.log("hello")
}
protected love(){
console.log("love")
}
}
var demo12 = new Demo12("xiaobai",20,"girl");
demo12.say()
class Demo12 {
// 只允许读
public readonly sex:string = "girl";
}
var demo12 = new Demo12();
// demo12.sex()// 报错
类的继承和重写
class Demo13 {
public name:string;
public skill:string;
public age:number;
constructor(name:string,skill:string,age:number) {
this.name = name;
this.skill = skill;
this.age = age;
}
inter(){
console.log('inter')
}
}
// var demo13 = new Demo13("name","skill",20);
class Child extends Demo13{
public text:string ="goods";
inter(){
super.inter()
console.log('child-inter')
}
public goods(){
console.log("goods")
}
}
var child = new Child("name","skill",20);
child.inter()
child.goods()
接口
interface Interf {
sex:string;
inter:string;
maiBB?:Boolean; //可选
}
let interf:Interf = {
sex:"girl",
inter:"look book",
maiBB:true,
}
console.log(interf)
interface Demo14 {
(source:string,subString:string):boolean;
}
let demo:Demo14;
demo =function (source:string,subString:string):boolean{
let flag = source.search(subString)
return (flag!=-1);
}
console.log(demo("啊,sfdaf,asfa","啊",));
命名空间
namespace Goods{
export class Nice {
public name:string ="xiaobai";
say(){
console.log("say")
}
}
}
namespace Goods1{
export class Nice {
public name:string ="xiaobai-Goods1";
say(){
console.log("Goods1-say")
}
}
}
var nice = new Goods.Nice();
console.log(nice)
var nice1 = new Goods1.Nice();
console.log(nice1)
\