在Typescript中导入Java对象

Sto*_*wke 6 javascript java typescript nashorn

对于downvoters来说 - 这是一个合理的问题.在假设我混淆了我的语言之前,请花时间检查它,就像某种编程新手一样!

我需要知道是否可以在Typescript脚本中导入Java对象(特别是枚举类).

我用谷歌搜索但没有找到任何东西.

ErrorCodeAuthority用于从我们的服务中为每个已知错误抛出自定义的标准化错误,其中包含在一个地方定义的设置消息(某些参数化,某些参数化,某些不是),http状态代码等.

在我们的JavaScript代码中,我们有

var JavaErrorCodeAuthority = Java.type("com.domain.ErrorCodeAuthority");
Run Code Online (Sandbox Code Playgroud)

是不是可以在打字稿中做同样的事情?

根据以下答案进行编辑

我宣布了以下内容:

declare module Java {
    export enum ErrorCodeAuthority {
        ENTITY_NOT_FOUND,
        HTTP_VERB_NOT_SUPPORTED,
        BAD_REQUEST,
        //...
    }
    export function type(arg: "com.domain.ErrorCodeAuthority"): ErrorCodeAuthority;
    export function type(arg: string): any;
}
var JavaErrorCodeAuthority = Java.type("com.domain.ErrorCodeAuthority");
Run Code Online (Sandbox Code Playgroud)

我试图使用新类型如下:

export class HttpFailResult extends HttpResult {
    constructor(public errorCode : Java.ErrorCodeAuthority, public userParams? : UserParam[]) {
        super(errorCode.httpStatus.value(), errorCode.toString());
    }
}
Run Code Online (Sandbox Code Playgroud)

当我尝试使用grunt编译为js时,我收到以下错误:

error TS2339: Property 'httpStatus' does not exist on type 'ErrorCodeAuthority'.
Run Code Online (Sandbox Code Playgroud)

(作为参考,super HttpResult是一个包含number http code and a字符串body. HttpStatus, in the Java enum, is of typeorg.springframework.http.HttpStatus` 的对象).

我尝试删除该export function type(arg: "com.domain.ErrorCodeAuthority"): ErrorCodeAuthority;行,但没有更改异常.

编辑2 如果这有所不同,我们将在nashorn容器中运行所有这些

wiz*_*awu 3

在 Typescript 中可以做同样的事情吗?

是的。使用tyrian,你可以这样写

let JavaErrorCodeAuthority = com.domain.ErrorCodeAuthority
Run Code Online (Sandbox Code Playgroud)

并且每个级别的包都会自动完成。