And*_*tch 11 typescript webpack swagger-codegen
我用招摇,代码生成与-l typescript-angular选项生成的REST消费服务的库.生成的代码看起来像this(DefaultApi.ts):
namespace API.Client {
'use strict';
export class DefaultApi {
protected basePath = 'http://localhost:7331/v1';
public defaultHeaders : any = {};
static $inject: string[] = ['$http', '$httpParamSerializer', 'basePath'];
constructor(protected $http: ng.IHttpService, protected $httpParamSerializer?: (d: any) => any, basePath?: string) {
if (basePath !== undefined) {
this.basePath = basePath;
}
}
private extendObj<T1,T2>(objA: T1, objB: T2) {
for(let key in objB){
if(objB.hasOwnProperty(key)){
objA[key] = objB[key];
}
}
return <T1&T2>objA;
}
/**
* Delete a person.
* Deletes a specified individual and all of that person's connections.
* @param id The id of the person to delete
*/
public deletePersonById (id: number, extraHttpRequestParams?: any ) : ng.IHttpPromise<{}> {/*...*/}
/* etc... */
}
}
Run Code Online (Sandbox Code Playgroud)
如您所见,有些具体类需要使用,但是在命名空间内声明,即不能import.我的编辑器(VSCode)在我引用时并没有抱怨,API.Client.DefaultApi尽管缺少一个,import因为它将定义作为我认为的声明命名空间的一部分.但在运行时,浏览器抱怨API没有定义.
我正在使用webpack捆绑我的代码.我在SO上看到了一些类似于这个问题的其他问题,但那里的答案没有运气.
编辑:
根据要求,这是我和ts和webpack的配置文件:
webpack配置文件:
const webpack = require('webpack');
const conf = require('./gulp.conf');
const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const autoprefixer = require('autoprefixer');
module.exports = {
module: {
preLoaders: [
{
test: /\.ts$/,
exclude: /node_modules/,
loader: 'tslint'
}
],
loaders: [
{
test: /.json$/,
loaders: [
'json'
]
},
{
test: /\.(css|less)$/,
loaders: [
'style',
'css',
'less',
'postcss'
]
},
{
test: /\.ts$/,
exclude: /node_modules/,
loaders: [
'ng-annotate',
'ts'
]
},
{
test: /.html$/,
loaders: [
'html'
]
}
]
},
plugins: [
new webpack.optimize.OccurrenceOrderPlugin(),
new webpack.NoErrorsPlugin(),
new HtmlWebpackPlugin({
template: conf.path.src('index.html')
})
],
postcss: () => [autoprefixer],
debug: true,
devtool: 'source-map',
output: {
path: path.join(process.cwd(), conf.paths.tmp),
filename: 'index.js'
},
resolve: {
modules: [
path.resolve(__dirname, '../src/app'),
path.resolve(__dirname, '../node_modules')
],
extensions: [
'',
'.webpack.js',
'.web.js',
'.js',
'.ts'
]
},
entry: `./${conf.path.src('index')}`,
ts: {
configFileName: '../tsconfig.json'
},
tslint: {
configuration: require('../tslint.json')
}
};
Run Code Online (Sandbox Code Playgroud)
tsconfig.json:
{
"compilerOptions": {
"baseUrl": "src/app",
"sourceMap": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"removeComments": false,
"noImplicitAny": false,
"module": "commonjs"
},
"compileOnSave": false,
"include": [
"src/**/*.ts"
],
"exclude": [
"!typings/**",
"!node_modules/**"
]
}
Run Code Online (Sandbox Code Playgroud)
当前版本的 swagger-codegen TypeScript Angular 生成器不会将 DefaultApi 包装在命名空间中。
更新并重新生成。如果您有任何问题,请告诉我。
| 归档时间: |
|
| 查看次数: |
609 次 |
| 最近记录: |