簡體   English   中英

打字稿模塊作為功能

[英]typescript module as function

我用打字稿寫庫,必須保留一些api

_(1).seconds()

事實是_是一個模塊,在先前的實現中是這樣的

module.exports = valueFunction;
module.exports.seconds = seconds;

有可能在打字稿中實現相同的內容嗎?

這是考慮將其分解並進行代碼完成/智能工作的一種方法。 有一些選項更接近原始的JavaScript實現,但是,使代碼完成工作可能會有些挑戰。

主要函數_被導出,並返回一個名為Chained的導出類。 這是在這個class ,其中,從返回值掛功能_將存在。

在實現文件( sample.ts )中:

export class Chained {
    constructor(private val: number) {
    } 
    seconds(): number {
        return this.val / 1000;
    }
}

export function _(val: number): Chained {
    return new Chained(val);
}

然后使用:

/// <reference path="sample.ts" />

import sample = require('./sample');
// create a simple alias for the exported _ function:
import _ = sample._;

var val = _(5000).seconds();
console.log(val);

輸出將是5因為seconds將原始數字除以1000

如果需要該功能,例如:

_.seconds

以及:

_().seconds()

當TypeScript支持使用屬性擴展Function實例時,您的選擇變得更加有限,而intellisense不起作用:

// this won't work well:
export function _(val:number) : Chained {
   return new Chained(val);
}

_["seconds"] = (val:number) : number => {
   return val / 1000;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM