首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >运算符'*=‘不能应用于类型'number \ bigint’和‘number’“,

运算符'*=‘不能应用于类型'number \ bigint’和‘number’“,
EN

Stack Overflow用户
提问于 2021-05-15 19:42:26
回答 1查看 839关注 0票数 0

我有一个来自js-组合学的置换函数,我想配置它

代码语言:javascript
运行
复制
const _BI = typeof BigInt == 'function' ? BigInt : Number;

const _crop = (n) => n <= Number.MAX_SAFE_INTEGER ? Number(n) : _BI(n);

function permutation(n, k) {
  if (n < 0)
      throw new RangeError(`negative n is not acceptable`);
  if (k < 0)
      throw new RangeError(`negative k is not acceptable`);
  if (0 == k)
      return 1;
  if (n < k)
      return 0;
  [n, k] = [_BI(n), _BI(k)];
  let p = _BI(1);
  while (k--) 
      p *= n--;
  return _crop(p);

}

ts给我的是p *= n--;

Operator '*=' cannot be applied to types 'number | bigint' and 'number'.

我怎样才能纠正错误?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-16 01:05:41

这是|算子和*=算子的局限性。

  1. *=运算符不能用混合类型操作。您必须在两边放置相同的类型,或numberbigint
  2. 尽管如此,如果您为np都添加了一个通用模板n,您也会遇到麻烦,因为n可以是bigintnumberbigint|number (某种同时输入)。请参阅https://github.com/microsoft/TypeScript/issues/39569
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67550626

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档