代码之家  ›  专栏  ›  技术社区  ›  Anthony Kong

react transition的样式对象导致“无索引签名”错误

  •  0
  • Anthony Kong  · 技术社区  · 6 年前

    我想用 Transition

    (75,45): error TS7017: Element implicitly has an 'any' type because type '{ entering: { opacity: number; }; entered: { opacity: number; }; exiting: { opacity: number; }; exited: { opacity: number; }; }' has no index signature.
    

    以下是相关代码:

    import Transition from 'react-transition-group/Transition';
    
    ...
    
    class AnimatedElement extends React.PureComponent {
    
      render = () => {
        const top = 50;
        const left = 35;
        const transitionStyles = {
          entering: { opacity: 1 },
          entered: { opacity: 1 },
          exiting: { opacity: 0.5 },
          exited: { opacity: 0 },
        };
        const duration = 500;
        const defaultStyle = {
          top,
          left,
          transform: 'scale(3)',
          transition: `opacity ${duration}ms ease-in-out`,
        };
        return (
            <Transition timeout={500} in={true}>
              {(state) => (
              <div style={{ ...defaultStyle, ...transitionStyles[state] }}>
                {this.props.image}
              </div>
              )}
            </Transition>
        );
      };
    }
    

    <div style={{ ...defaultStyle, ...transitionStyles[state] }}> 是由错误消息标记的第75行。

    我不明白这为什么会导致错误,特别是我在其他类型脚本模块中使用了类似的代码。

    1 回复  |  直到 6 年前
        1
  •  0
  •   Anthony Kong    6 年前

    这条线

    const transitionStyles = {
    

    应该改成

    const transitionStyles: React.CSSProperties = {
    
        2
  •  -1
  •   Pandelis    6 年前

    你可能需要做两件事中的一件。

    我相信您需要将tsconfig配置为 "noImplicitAny": false

    如果这不能解决问题,那么可能是typescript正在库中检查类型。你需要告诉它不要用:

    {
        "compilerOptions": {
            "skipLibCheck": true,
            ...
        },
        ...
    }
    

    通过: Allow implicit any only for definition files