As I read the specs, if you convert a BigInt value to some "integer" value with ToInteger, it would not be a BigInt, cause a TypeError instead.
Only definitions about ToNumber and ToNumeric are added in https://tc39.github.io/proposal-bigint/ .
For example, start in Array.prototype.slice(start, end) will be converted an integer value with ToInteger. ToInteger changes the value to be an integer value with ToNumber (ref). But ToNumber causes a TypeError for BigInt (ref).
I think ToInteger shouldn't convert a value and keep as it is if the value is BigInt same as ToNumeric (ref).
If you have any information of the reason, please tell me. Thank you.
It is disallowed because it would be an implicit coercion that loses precision.
Thank you for your response.
I still have the question. I meant ToInteger(BigInt) should returns the BigInt as it is. Of course I think ToInteger(Number) should returns a rounded Number. I didn't mean about coercion. Why would ToInteger(BigInt) lose precision?
BigInt is still at Stage 3, so the appropriate place to file the issue is at https://github.com/tc39/proposal-bigint/ . In this case, you can find an explanation of the answer at https://github.com/tc39/proposal-bigint/#interoperation-with-number-and-string .
@littledan Thank you for the navigation!