Это не проблема ag-grid
, это касается того, как вы определили свой компонент. В вашем коде вы говорите:
export class Test extends React.Component {
// ...
}
Если вы посмотрите на определение типа React.Component
, вы увидите, что это generi c и может принимать до трех аргументов типа:
interface Component<P = {}, S = {}, SS = any> {
// ...
}
Первый аргумент типа, P
, является типом свойств. Второй, S
, - это тип состояния, третий, SS
, - тип снимка состояния, о чем вам не нужно особо заботиться в вашем примере.
Поскольку вы не предоставляете аргументы типа для React.Component
, TypeScript использует значения по умолчанию ({}
для реквизита и {}
для состояния):
// To TypeScript your code looks like:
export class Test extends React.Component<{}, {}, {}> {
// ^
// This is the type of your state
}
Итак, TypeScript считает state
вашего компонента {}
и, следовательно, не имеет свойства columnDefs
или rowData
!
Чтобы исправить это, укажите тип вашего state
:
interface TestState {
columnDefs: SomeColumnType[];
rowData: SomeRowObject[];
}
// You should also maybe define a type for props but that's not your question
export class Test extends React.Component<{}, TestState> {
// WORKS!!!
}