创建和使用TypeScript库的故事是什么?

时间:2015-08-14 14:53:04

标签: typescript libraries

我已经在这里和那里使用TypeScript用于Web应用程序,并引用了通过Definitely Typed提供的公共类型定义,但有一件事总是让我想到的是如何在TypeScript中创建可重用的库目的是被TypeScript应用程序或其他库使用。

关于该主题的大多数指导似乎直接指向如何创建或查找最初在JavaScript中编写的库的类型定义,但是用TypeScript编写的库如何,似乎有一些共享生成的js文件的机制和相应的类型定义文件应该是一个常见的地方,但我还没有找到任何人试图为私人或公共图书馆这样做。也许我在找错了地方?是否有创建和使用TypeScript库的故事。

2 个答案:

答案 0 :(得分:4)

要创建将由TS项目使用的TS库,您不必做很多事情。

(对不起,如果示例过于冗长。)

图书馆

假设您的源文件是在TypeScript中写入的,则需要进行以下配置调整:

tsconfig.json

{
  "compilerOptions": {
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "target": "es5",
    "module": "commonjs",
    "removeComments": false,
    "sourceMap": true,
    "outDir": "dist/",
    "declaration": true
  },
  "filesGlob": [
    "**/*.ts",
    "!node_modules/**/*"
  ],
  "exclude": [
    "node_modules",
    "typings/global",
    "typings/global.d.ts"
  ],
  "compileOnSave": true
}

这里重要的是declarations: true,它告诉TS编译器生成d.ts文件。

的package.json

{
  "name": "my-typescript-library",
  "description": "...",
  "version": "1.0.0",
  "main": "./dist/my.service.js",
  "typings": "./dist/my.service.d.ts",
  "license": "ISC",
  "dependencies": {
    ...
  },
  "devDependencies": {
    "typescript": "^1.8.10",
    "typings":"^1.0.4",
    ...
  }
}

这里重要的是“主要”和“打字”,这是图书馆服务的切入点。因此,如果有人要require("my-typescript-library"),那么将使用此处列出的文件。 typings字段类似,但显然有助于TypeScript。

然后将此库推送到Github或Bitbucket,或任何地方。

消费者

你在这里不需要太多。

的package.json

为您的库添加依赖项:

{
  ...,
  "dependencies": {
    "my-typescript-library": "git+ssh://bitbucket.org/you/my-typescript-library",
    ...
  }
}

在此示例中您将需要一个SSH密钥。

然后你只需导入lib。

my_file.ts

import {MyService} from "my-typescript-library";

所以你有它,在TypeScript应用程序中使用TypeScript lib。希望这是一个足够的答案(并且足够清楚),否则只需给我一句话。

答案 1 :(得分:-1)

好吧,我认为您可以为此目的使用模块,模块就像c#中的命名空间,例如。

//File Utils.ts
module Utils
{
    export class UtilsClass
    {
        do(param: string)
        {
            //do something
        }
    }
}

//Another ts file
var formatter = new Utils.UtilsClass();
formatter.do("str");

此致