Деструктурирование параметра, определенного в интерфейсе

#generics #reactjs #typescript #jsx #typescript2.0

#дженерики #reactjs #typescript #jsx #typescript2.0

Вопрос:

Я немного смущен тем, почему это не работает. Может кто-нибудь, пожалуйста, объяснить, почему plans в PricingComponent не подразумевается ввод текста из определенного интерфейса.

 import * as React from 'react';
import Plans from '../data/Plans';

interface PricingProps {
  plans: {
    [index: number]: {
      id: number,
      unitLimit: string,
      ownerLimit: string,
      storageLimit: string,
    };
  };
}

const Pricing: React.StatelessComponent<any> = () => <PricingComponent plans={Plans} />;

const PricingComponent: React.StatelessComponent<PricingProps> = ({ plans }) =>
  <div />;
  

Комментарии:

1. Какую версию TS вы используете? Это работает для меня на @ 2.0.3. Кроме того, где вы получаете типизацию react?

2. @Paarth да, я тоже использую 2.0.3. Я использую noImplicitAny tsconfig compilerOptions prop, который заставляет его жаловаться на то, что он неявно вводится как any . Я просто предположил, что тип может быть выведен.

3. Вот что меня смущает. У меня тоже есть noImplicitAny , и он все еще работает для меня — вот почему я заинтересован в вашем react.d.ts . Кроме того, возможно ли, что ваш редактор (возможно, vscode?) Использует 1.8.5 или какую-либо другую версию TS?

4. @Paarth Я использую определение DefinitelyTyped @types для React 0.14.43. Однако я скажу, что в настоящее время в моем проекте есть некоторые другие ошибки, которые я пытаюсь устранить, связанные с тем, что определения react не найдены. Возможно, это связано… ERROR in ~/node_modules/@types/react-router/lib/applyRouterMiddleware.d.ts (4,43): error TS2305: Module '"~/node_modules/react/react".export=' has no exported member 'Props'. У меня около 100 из этих различных ошибок, связанных с наборами, что довольно ясно, что они не загружаются должным образом.