如何使用 TypeScript 确定一串代码中有多少 KB?

Log*_*nch 3 javascript string size file typescript

假设我有以下 TypeScript 代码(表示为字符串):

function greet(name: string): void {
  console.log(`Hello ${name}!`);
}
Run Code Online (Sandbox Code Playgroud)

我如何以编程方式确定此字符串中有多少千字节?

我目前正在使用以下等式:

// NOTE: "string.length" represents the number of bytes in the string
const KB: number = (string.length / 1024).toFixed(2);
Run Code Online (Sandbox Code Playgroud)

问题是这个数字常常显得太大或太小而不是正确的。

当我将字符串放入空文件并保存时,文件管理器的属性输出完全不同的大小,有时会相差 2-20 KB。

我做错了什么,我应该使用1000字节来表示千字节而不是1024

Dan*_*ran 5

JavaScript 字符串中的字符使用 进行编码Unicode,每个引擎都有自己的字符集,最流行的是UTF-16。因此,每个字符都保存2 bytes数据。要查找字符串使用的总数kilobytes,请找到正在使用的数量bytes并将其除以1024

const string = "abcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabc";

const b = string.length * 2;
const kb = (b / 1024).toFixed(2);

console.log(`${kb}KB`);
Run Code Online (Sandbox Code Playgroud)