通过ts declare包装一个js库

myshape模块

0.npm init

  1. libs目录中新增3个js文件
    point.js
class Point{
  x = 0;
  y = 0;
  constructor(x,y) {
      this.x = x;
      this.y = y;
  }
  getDistance(other) {
      let xDis = Math.abs(this.x - other.x);
      let yDis = Math.abs(this.y - other.y);
      return Math.sqrt(xDis*xDis + yDis*yDis);
      
  }
}
module.exports = Point

circle.js

let Point = require('./point')

class Circle{
  radius = 0;
  point = null;
  constructor(point, radius) {
      this.radius = radius;
      this.point = point;
  }
  isInCircle(point){
      let dis = this.point.getDistance(point)
      return dis <= this.radius;
  }
}
module.exports = Circle

index.js

let Point = require('./point')
let Circle = require('./circle')

module.exports = {
  Point,
  Circle
}

package.json

{
  "name": "myshape",
  "version": "1.0.0",
  "description": "",
  "main": "./libs/index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "files": ["libs"]
}

index.d.ts

declare module 'myshape' {
  class Point{
    constructor(x:number,y:number);
    getDistance(other:Point):number;
  }

  class Circle{
    constructor(point: Point, radius: number);
    isInCircle(point: Point):boolean;
  }
}

执行 npm link

### 测试myshape模块
0. npm init

  1. tsc --init
  2. npm link myshape
  3. 新建demo.ts
import {Point} from 'myshape'
let p:Point = new Point(2,3);
let p2:Point = new Point(1,2)
console.log(p.getDistance(p2));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值