string/truncate.jsjavascript
/**
 * 将字符串截断到指定长度,并在截断处追加省略标记。
 * @function truncate
 * @memberof module:string
 * @param {string} value 原始字符串
 * @param {number} [length=30] 包含省略标记在内的最大长度
 * @param {string} [omission='...'] 省略标记
 * @returns {string} 截断后的新字符串
 * @throws {TypeError|RangeError} 参数类型或长度不正确时抛出
 */
function truncate(value, length = 30, omission = '...') {
  if (typeof value !== 'string' || typeof omission !== 'string') throw new TypeError('value and omission must be strings')
  if (!Number.isInteger(length) || length < 0) throw new RangeError('length must be a non-negative integer')
  if (value.length <= length) return value
  if (omission.length >= length) return omission.slice(0, length)
  return value.slice(0, length - omission.length) + omission
}

export default truncate