为.js文件创建打字稿定义

时间:2019-01-28 08:28:39

标签: typescript

我是TypeScript的新手,正在尝试为包含JavaScript文件的文件夹创建Typescript定义index.d.ts

src
   |--controllers
      |-- index.d.ts
      |-- Controller1.js (myMethod1)
      |-- Controller2.js (myMethod2)
   |--routes
      |-- routes.js

Controller1Controller2中的方法是动态生成的。我需要为控制器定义接口。即Controller1仅应具有myMethod1,而Controller2应具有myMethod2

index.d.ts

import * as express from 'express'

interface CommonInterface {
    get(req: express.Request, res: express.Response): void;

    delete(req: express.Request, res: express.Response): void;

    update(req: express.Request, res: express.Response): void;
}

declare namespace Controller1 {
    function myMethod1(req: express.Request, res: express.Response): void;
}

declare namespace Controller2 {
    function myMethod2(req: express.Request, res: express.Response): void;
}

编辑:我正在导入如下所示的控制器。但是代码完成显示接口名称而不是myMethod函数。

routes.js

const Controller1 = require('../controllers/Controller1');
Controller1.myMethod1() // lint shows unknown method

const Controller1 = require('../controllers'); // index.js
Controller1.Controller1.myMethod1() // lint works correctly here

1 个答案:

答案 0 :(得分:0)

JavaScript不支持类型定义。这是一个Typescript功能(或精确地说是project)。这意味着您无法使用$( function() { $( "#slider-range" ).slider({ range: true, min: 0, max: 10000, values: [ 2000, 5000 ], slide: function( event, ui ) { $( "#amount" ).val( "$" + ui.values[ 0 ] + " - $" + ui.values[ 1 ] ); $("#select-min-price").val(ui.values[ 0 ]); $("#select-max-price").val(ui.values[ 1 ]); } }); $( "#amount" ).val( "$" + $( "#slider-range" ).slider( "values", 0 ) + " - $" + $( "#slider-range" ).slider( "values", 1 ) ); }); 文件在js文件中看到智能感知。