CSS
分段省略
inline-block 设置基本宽度及容器,内部使用line-flex设置动态均分(适用于简单实现省略的场景)
<span className={styles.wrapper}><span className={styles.container}><span className={styles.block}>xxxxxxxx</span><span>(</span><span className={styles.block}>vvvvvvvv</span><span>)</span></span></span>
.wrapper {width: calc(100% - 30px);word-break: keep-all;white-space: nowrap;text-overflow: ellipsis;overflow: hidden;display: inline-block;.container {display: inline-flex;max-width: 100%;.block {text-overflow: ellipsis;overflow: hidden;}}}
TypeScript
非空数组断言
使用 interface 进行 Array 类型重载,主要改变 0 位必定有内容,及 pop 返回非 undefined,再通过谓语函数进行断言以改变词法上下文中的类型。
/** Array 重载 */interface NonEmptyArray<A> extends Array<A> {0: A;pop(): A;}// 谓语函数const isStackNonEmpty = <T extends unknown>(a: T[]): a is NonEmptyArray<T> => a && a.length > 0
对于自造 stack 进行 pop 推出,push 推入的场景比较适用。
