| @@ -8,10 +8,11 @@ function test1() { | |||||
| } | } | ||||
| } | } | ||||
| function test2() { | 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() { | function main() { | ||||
| @@ -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()) | |||||
| } | |||||
| } | |||||
| ``` | |||||
| @@ -328,21 +328,13 @@ export class snowflakeIdv1 { | |||||
| * 生成ID | * 生成ID | ||||
| * @returns | * @returns | ||||
| */ | */ | ||||
| public NextId(): number | bigint { | |||||
| public NextId(): bigint { | |||||
| if (this._IsOverCost) { | if (this._IsOverCost) { | ||||
| // | // | ||||
| let id = this.NextOverCostId() | |||||
| if (id >= 9007199254740992n) | |||||
| return id | |||||
| else | |||||
| return parseInt(id.toString()) | |||||
| return this.NextOverCostId() | |||||
| } else { | } else { | ||||
| // | // | ||||
| let id = this.NextNormalId() | |||||
| if (id >= 9007199254740992n) | |||||
| return id | |||||
| else | |||||
| return parseInt(id.toString()) | |||||
| return this.NextNormalId() | |||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| @@ -2,7 +2,7 @@ import { snowflakeIdv1 } from '../snowflakeIdv1' | |||||
| const WorkerId = process.env.WorkerId == undefined ? 1 : process.env.WorkerId | 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++) { | for (let i = 0; i < 10; i++) { | ||||
| let id1 = gen1.NextId() | let id1 = gen1.NextId() | ||||
| console.log(`${i} ID:${id1} ${typeof id1} 长度:${id1.toString().length}`) | console.log(`${i} ID:${id1} ${typeof id1} 长度:${id1.toString().length}`) | ||||