const Tween = {
Linear: (t: number, b: number, c: number, d: number) => (c * t) / d + b,
Quad: {
easeIn: (t: number, b: number, c: number, d: number) => c * (t /= d) * t + b,
easeOut: (t: number, b: number, c: number, d: number) => -c * (t /= d) * (t - 2) + b,
easeInOut: (t: number, b: number, c: number, d: number) => ((t /= d / 2) < 1 ? (c / 2) * t * t + b : (-c / 2) * (--t * (t - 2) - 1) + b),
}
}
type TweenFunc =
| 'Linear'
| 'Quad.easeIn'
| 'Quad.easeOut'
| 'Quad.easeInOut';
export default (tween: TweenFunc) => {
const [name, func] = tween.split('.');
if (!func) return Tween.Linear;
// Tween[name]这里会报错
// element implicitly has an any type because expression of type string cant be used to index
return Tween[name][func];
};
谢过各位大佬
TypeScript 目前还不支持字面量类型拆分组合,你可以
按 2 的例子: