diff --git a/JavaScript/test/test2.js b/JavaScript/test/test2.js index 1aa6048..1e7fd4b 100644 --- a/JavaScript/test/test2.js +++ b/JavaScript/test/test2.js @@ -8,10 +8,11 @@ function test1() { } } function test2() { - const genid = new GenId({ WorkerId: 1 }) - const id = genid.NextId() - console.log(typeof (id)) - console.log(id, id.toString().length) + const genid = new GenId({ WorkerId: 1, SeqBitLength: 14 }) + for (let i = 0; i < 10; i++) { + let id1 = genid.NextId() + console.log(`${i} ID:${id1} ${typeof id1} 长度:${id1.toString().length}`) + } } function main() { diff --git a/TypeScript/README.md b/TypeScript/README.md index b3dfc77..aa8c1cb 100644 --- a/TypeScript/README.md +++ b/TypeScript/README.md @@ -144,3 +144,31 @@ $ ts-node test/test4.ts ``` +## 同时兼容number和bigint的写法 + +如果您觉得这个用法更好,可以手动替换对应方法 + +```js + /** + * 生成ID + * @returns + */ + public NextId(): number | bigint { + if (this._IsOverCost) { + // + let id = this.NextOverCostId() + if (id >= 9007199254740992n) + return id + else + return parseInt(id.toString()) + } else { + // + let id = this.NextNormalId() + if (id >= 9007199254740992n) + return id + else + return parseInt(id.toString()) + } + } + +``` \ No newline at end of file diff --git a/TypeScript/snowflakeIdv1.ts b/TypeScript/snowflakeIdv1.ts index b3b5227..f84a22f 100644 --- a/TypeScript/snowflakeIdv1.ts +++ b/TypeScript/snowflakeIdv1.ts @@ -328,21 +328,13 @@ export class snowflakeIdv1 { * 生成ID * @returns */ - public NextId(): number | bigint { + public NextId(): bigint { if (this._IsOverCost) { // - let id = this.NextOverCostId() - if (id >= 9007199254740992n) - return id - else - return parseInt(id.toString()) + return this.NextOverCostId() } else { // - let id = this.NextNormalId() - if (id >= 9007199254740992n) - return id - else - return parseInt(id.toString()) + return this.NextNormalId() } } } diff --git a/TypeScript/test/test4.ts b/TypeScript/test/test4.ts index 6477960..ab51f36 100644 --- a/TypeScript/test/test4.ts +++ b/TypeScript/test/test4.ts @@ -2,7 +2,7 @@ import { snowflakeIdv1 } from '../snowflakeIdv1' const WorkerId = process.env.WorkerId == undefined ? 1 : process.env.WorkerId -let gen1 = new snowflakeIdv1({ WorkerId: WorkerId, SeqBitLength: 13 }) +let gen1 = new snowflakeIdv1({ WorkerId: WorkerId, SeqBitLength: 10 }) for (let i = 0; i < 10; i++) { let id1 = gen1.NextId() console.log(`${i} ID:${id1} ${typeof id1} 长度:${id1.toString().length}`)