说明我们还没下载typescript
安装
npm i typescript -g
查看版本
tsc -v
这样我们就可以使用ts了
初始化ts项目
tsc --init
定义一个ts声明
xx.d.ts
declare type ClassDecorator = <TFunction extends Function>(target: TFunction) => TFunction | void;
要用到装饰器就要取消experimentalDecorators
注释
装饰器代码
const HelloWorld:ClassDecorator = (target:any) =>{
console.log(target)
}
@HelloWorld
class MyClassOne {
constructor(){
console.log('hello')
}
}
const app:any = document.getElementById("app")
const myClassOne:MyClassOne = new MyClassOne()
问题(一)
如果这个问题在配置了
experimentalDecorators
后还存在,那么就可以
解决办法
在
tsconfig.json
中找到rootDir(入口文件目录)
和outDir(打包文件目录)
中设置
直接执行指令tsc
即可或者tsc -w
(监听)
添加一个html来查看
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>ts装饰器测试</title>
</head>
<body>
<div id="app">
</div>
</body>
<script src="./dist/main.js"></script><!--添加的是打包好的js代码-->
</html>
生成的js代码(自己不用写,是tsc生成的)
"use strict";
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
const HelloWorld = (target) => {
console.log(target);
};
let MyClassOne = class MyClassOne {
constructor() {
console.log('hello');
}
};
MyClassOne = __decorate([
HelloWorld
], MyClassOne);
const app = document.getElementById("app");
const myClassOne = new MyClassOne();
打开控制台查看