Свойство ‘api’ не существует для типа ‘AgGridReact’

#typescript #ag-grid

Вопрос:

Я пытаюсь использовать ag-grid в react tyescript проекте, и я сталкиваюсь с проблемами с типами при выполнении руководства. В части включения выбора.

В строке: const selectedNodes: RowNode[] = gridRef.current.api.getSelectedNodes();

Ошибка: Property 'api' does not exist on type 'AgGridReact'

Даже при определении: const gridRef = useRef<AgGridReact>(null);

Я взглянул на agGridReat.d.ts :

 export declare class AgGridReact extends Component<AgGridReactProps | AgReactUiProps, {}> {
    api: GridApi;
    columnApi: ColumnApi;
    private setGridApi;
    render(): JSX.Element;
}
 

Похоже api , здесь определено.
Есть ли способ избежать всех этих проблем, но при этом использовать typescript? Чего мне не хватает?

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

1. Убедитесь, что у вас есть импорт import { AgGridReact } from 'ag-grid-react/lib/agGridReact'; (нет import { AgGridReact } from 'ag-grid-react'; )

2. @ccheneson похоже, это то, что мне было нужно. Но почему, а также как вы узнали?

3. Я скопировал / вставил ваши фрагменты и наблюдаю то же самое, что и вы. Я вспомнил, что у меня было 2 варианта из vscode, и я попробовал другой. Я думаю, что ваш фрагмент с определением класса и правильный файл импорта совпадают. Я не знаю, когда вы будете использовать другой импорт.

4. Не уверен, что вы получите тот же результат, но, похоже const selectedNodes: RowNode[] | undefined = (gridRef.current as AgGridReact).props.api?.getSelectedNodes(); , работает с import { AgGridReact } from 'ag-grid-react';