环境搭建
- 下载并安装nodejs,LTS版长期维护版
下载地址: https://nodejs.org/en/
检测是否安装成功: node -v。 (安装完node,其npm也自动安装成功)
- npm全局安装typescript
npm install -g cnpm -registry=https://registry.npm.taobao.org
cnpm -v
npm install -g npm@9.1.2
npm -v
npm i -g typescript
tsc
- 创建一个ts文件
- 使用tsc对文件进行编译
tsc hello.ts
类型声明
let a: string;
let b: number;
let c: boolean=false;
let a: 10;
let a: string|number;
let d: any;
d=1;
d='hello';
d=true;
let m unkonwn;
a='hi';
s=a as string;
s=<string>a;
let a: object;
a={};
a=function(){};
let b: {name:string,age?:number};
b={name:"lily"};
let c: {name:string,[proName:string]:any};
c={name:"lily",age:5,address:'beijing'};
let d: (a:number,b:number)=>number;
d=function(n1,n2):number{
return n1+n2;
}
let a: string[];
let a: number[];
let a: Array<number>;
let h: [string,number];
enum Color {Red, Green, Blue}
let c: Color = Color.Green;
tsconfig.json文件编译选项
{
"compilerOptions": {
"module": "commonjs",
"target": "es5",
"sourceMap": true,
"outDir": "./dist",
"outFile": "./dist/app.js",
"allowJs": false,
"checkJs": false,
"removeComments": true,
"noEmitOnError": false,
"alwaysStrict": true,
"noImplicitAny": true,
"noImplicitThis": true,
"strictNullChecks": true,
},
"exclude": [
"node_modules"
],
"include": [
"./src/**/*"
]
}
使用webpackage打包ts代码
npm init -y
cnpm i -D webpack webpack-cli typescript ts-loader
npm run build
cnpm i -D html-webpack-plugin
cnpm i -D webpack-dev-server
cnpm i -D clean-webpack-plugin
cnpm i -D @babel/core @babel/preset-env babel-loader core-js
webpack.config.js文件
const path=require('path');
const HTMLWebpackPlugin=require('html-webpack-plugin');
const { CleanWebpackPlugin } =require('clean-webpack-plugin');
module.exports={
entry: "./src/index.js",
output: {
path: path.resolve(__dirname,'dist'),
filename: "bundle.js",
},
module: {
rules: [
{
test: /\.ts$/,
use: [
{
loader: "babel-loader",
options: {
presets:[
[
"@babel/preset-env",
{
targets:{
"chrome":"88"
},
"corejs":"3",
"useBuiltIns":"usage"
}
]
]
},
},
'ts-loader'
],
exclude: /node-modules/,
}
]
},
plugins: [
new CleanWebpackPlugin(),
new HTMLWebpackPlugin({
title: "这是一个自定义title"
}),
],
resolve: {
extensions: ['.ts','.js']
},
}
面向对象-类
class Person{
name:string='Lily';
static age:number=18;
readonly address:string="shanghai";
sayHello(){
console.log("hi 大家好")
};
};
const per=new Person();
console.log(per,per.name,Person.age);
per.sayHello();
class Dog{
name:string;
age:number;
constructor(name:string,age:number) {
this.name=name;
this.age=age;
};
bark(){
alert("wangwnagwnag");
}
}
const dog1=new Dog("xiaohuang",4);
const dog2=new Dog("xiaohei",2);
console.log(dog1);
console.log(dog2);
接口
interface IPerson {
firstName:string,
lastName:string,
sayHi: ()=>string
}
var customer:IPerson = {
firstName:"Tom",
lastName:"Hanks",
sayHi: ():string =>{return "Hi there"}
}
console.log("Customer 对象 ")
console.log(customer.firstName)
console.log(customer.lastName)
console.log(customer.sayHi())
var employee:IPerson = {
firstName:"Jim",
lastName:"Blakes",
sayHi: ():string =>{return "Hello!!!"}
}
console.log("Employee 对象 ")
console.log(employee.firstName)
console.log(employee.lastName)
泛型