我已经在这里和那里使用TypeScript用于Web应用程序,并引用了通过Definitely Typed提供的公共类型定义,但有一件事总是让我想到的是如何在TypeScript中创建可重用的库目的是被TypeScript应用程序或其他库使用。
关于该主题的大多数指导似乎直接指向如何创建或查找最初在JavaScript中编写的库的类型定义,但是用TypeScript编写的库如何,似乎有一些共享生成的js文件的机制和相应的类型定义文件应该是一个常见的地方,但我还没有找到任何人试图为私人或公共图书馆这样做。也许我在找错了地方?是否有创建和使用TypeScript库的故事。
答案 0 :(得分:4)
要创建将由TS项目使用的TS库,您不必做很多事情。
(对不起,如果示例过于冗长。)
假设您的源文件是在TypeScript中写入的,则需要进行以下配置调整:
{
"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文件。
{
"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,或任何地方。
你在这里不需要太多。
为您的库添加依赖项:
{
...,
"dependencies": {
"my-typescript-library": "git+ssh://bitbucket.org/you/my-typescript-library",
...
}
}
在此示例中您将需要一个SSH密钥。
然后你只需导入lib。
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");
此致