为了测试网络编码/解码逻辑,我用Java和JavaScript做了一对测试。对于这些测试,我有数据提供程序,它们几乎只是一堆常量。
现在,在Java中,我有一个数据提供程序,它使用一个静态块为我想要测试的类之一创建一个随机字节数组,如下所示:
public static final byte[] BYTE_ARRAY_RANDOM = new byte[4 * 1024];
static {
new Random().nextBytes(BYTE_ARRAY_RANDOM);
}
public static final FileBody FILE_BODY_RANDOM = new FileBody(BYTE_ARRAY_RANDOM);
现在我想在TypeScript中镜像它。我已经尝试过了,但这会导致编译器错误,因为我显然做错了静态块:
public static BYTE_ARRAY_RANDOM: Uint8Array = new Uint8Array(4 * 1024);
static {
BYTE_ARRAY_RANDOM.set(pseudoRandomBytes(bytes.length));
}
public static FILE_BODY_RANDOM: FileBody = new FileBody(TestDataProvider.BYTE_ARRAY_RANDOM);
我也尝试了许多其他方法,但到目前为止还没有能够制定出一个解决方案。
那么,我在JavaScript中如何做到这一点呢?我想要的是创建一个Constant,它在每次运行测试时提供一个任意的随机字节数组。
或者换个方式问:如何在TypeScript中转换此静态?
let bytes = new Uint8Array(4 * 1024);
bytes.set(pseudoRandomBytes(bytes.length));
let fileBody = new FileBody(bytes);
2条答案
按热度按时间o75abkj41#
我不认为TypeScript支持静态块。对于您的特定情况,您可以创建一个helper函数:
bnl4lu3b2#
TypeScript支持静态初始化块,从TypeScript 4.4开始(2021年8月可用)
https://devblogs.microsoft.com/typescript/announcing-typescript-4-4-rc/#static-blocks
它也支持JavaScript:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes/Static_initialization_blocks
语法如你所料,即: