如何在接口中将常量放在打字稿中。就像在java中一样:
interface OlympicMedal {
static final String GOLD = "Gold";
static final String SILVER = "Silver";
static final String BRONZE = "Bronze";
}
答案 0 :(得分:20)
您无法在界面中声明值。
您可以在模块中声明值:
module OlympicMedal {
export var GOLD = "Gold";
export var SILVER = "Silver";
}
在即将发布的TypeScript版本中,您将可以使用const
:
module OlympicMedal {
export const GOLD = "Gold";
export const SILVER = "Silver";
}
OlympicMedal.GOLD = 'Bronze'; // Error
答案 1 :(得分:0)
有一个在接口中具有常量的解决方法:使用相同的名称定义模块和接口。
在下面,接口声明将与模块合并,以便OlympicMedal成为值,名称空间和类型。这可能就是您想要的。
module OlympicMedal {
export const GOLD = "Gold";
export const SILVER = "Silver";
}
interface OlympicMedal /* extends What_you_need */ {
myMethod(input: any): any;
}
这适用于Typescript 2.x
答案 2 :(得分:0)
这似乎可行:
class Foo {
static readonly FOO="bar"
}
export function foo(): string {
return Foo.FOO
}
您也可以像这样拥有私有常量。看来接口虽然不能具有静态成员。
答案 3 :(得分:0)
只需使用界面中的值代替类型,请参见下文
export interface TypeX {
"pk": "fixed"
}
let x1 : TypeX = {
"pk":"fixed" // this is ok
}
let x2 : TypeX = {
"pk":"something else" // error TS2322: Type '"something else"' is not assignable to type '"fixed"'.
}
答案 4 :(得分:0)
在接口as shown here中建立常量的一种推荐方法是执行以下操作:
export class Constants {
public static readonly API_ENDPOINT = 'http://127.0.0.1:6666/api/';
public static readonly COLORS = {
GOLD: 'Gold',
SILVER: 'Silver',
BRONZE: 'Bronze'
};
}
这是定义常量而又不被修改或disabling settings in the TSLinter的首选方法(因为模块和名称空间会通过linter发出许多警告)。