我要使用StaggeredMotion
,如此处记录:https://github.com/chenglou/react-motion#staggeredmotion-
示例代码为
<StaggeredMotion
defaultStyles={[{h: 0}, {h: 0}, {h: 0}]}
styles={prevInterpolatedStyles => prevInterpolatedStyles.map((_, i) => {
return i === 0
? {h: spring(100)}
: {h: spring(prevInterpolatedStyles[i - 1].h)}
})}>
{interpolatingStyles =>
<div>
{interpolatingStyles.map((style, i) =>
<div key={i} style={{border: '1px solid', height: style.h}} />)
}
</div>
}
</StaggeredMotion>
由于我的项目是用typescript
编写的,因此我需要将其转换为相应的typescript
语法并符合我的项目的编码标准。
例如,它不允许使用隐式any
类型。
这就是我所做的
import { StaggeredMotion, PlainStyle, spring } from 'react-motion';
const styleFn = (previousInterpolatedStyles?: PlainStyle[]) => prevInterpolatedStyles.map((tmp, i) => {
return i === 0
? { h: spring(100) }
: { h: spring(prevInterpolatedStyles[i - 1].h) };
})
return (
<StaggeredMotion
defaultStyles={[{ h: 0 }, { h: 0 }, { h: 0 }]}
styles={styleComputer}>
/>
{interpolatingStyles =>
<div>
{interpolatingStyles.map((style, i) =>
<div key={i} style={{border: '1px solid', height: style.h}} />)
}
</div>
}
</StaggeredMotion>
);
但是我从打字稿编译器中得到了很多错误:
错误TS7006:参数“ tmp”隐式具有“ any”类型。错误
错误TS7006:参数“ i”隐式具有“ any”类型。错误TS2532: 对象可能是“未定义”
我设法通过明确提供tmp
和i
的类型信息来修复前两个问题:
const styleFn = (previousInterpolatedStyles?: PlainStyle[]) => prevInterpolatedStyles.map((tmp: PlainStyle, i: number) => {
return i === 0
? { h: spring(100) }
: { h: spring(prevInterpolatedStyles[i - 1].h) };
})
现在我遇到了两个错误:
错误TS2322:类型'((prevInterpolatedStyles ?: PlainStyle [] | 未定义)=> {h:OpaqueConfig; } [] |未定义”不能分配给 类型'(previousInterpolatedStyles ?: PlainStyle [] |未定义)=> 样式[]'。输入'{h:OpaqueConfig; } [] |未定义”不是 可分配给'Style []'类型。 类型'undefined'不能分配给类型'Style []'。
如何解决此错误?