Solvedag grid error TS2559: Type 'GroupCellRenderer' has no properties in common with type 'ICellRenderer'.

ag-grid and ag-grid-angular at 10.1.0, upgraded Angular to 4.2.2, recompiled. Got following error

node_modules/ag-grid/dist/lib/rendering/cellRenderers/groupCellRenderer.d.ts(6,22): error TS2559: Type 'GroupCellRenderer' has no properties in common with type 'ICellRenderer'.

34 Answers

✔️Accepted Answer

@Haemoglobin correct, speaking as a user.

BTW, this fixes it:

add the line: refresh?( params: any ): void; to the file groupCellRenderer.d.ts


export declare class GroupCellRenderer extends Component implements ICellRenderer{
  refresh?( params: any ): void;
// ....

Other Answers:

@makinggoodsoftware I think you've misapprehended the problem here. Your .d.ts file has a bug in it.

If you write

interface Foo {
  blah()?: void;
class Bar implements Foo {

The implements clause does nothing. It does not cause a blah?(): void property to appear in Bar. There's no way this is what you intended to mean.

You should write this instead if you want to "copy down" optional properties into the class:

interface Foo {
  blah()?: void;
class Bar {
interface Bar extends Foo { }

I'm getting a similar error with 2.4
TS2559: Type 'Component<P, S>' has no properties in common with type 'ComponentLifecycle<P, S>'.

My 5cts... @guryanovev @RyanCavanaugh

The main point of discussion here is if you are not going to implement the only optional method in the interface, well then don't implement the interface.

Well, that is flawed in my opinion. Interfaces like the ones we are discussing in this thread have always existed in frameworks exposed to users. If you are creating and consuming these interfaces internally, and not distributing your code as a library, then I understand this might be completely unnecessary and I would agree with not implementing them at all.

BUT, we are a framework used by many other developers, and these interfaces have a very important function.

First they act as marker interface,, they help to semantically increase the self documented aspect of the application, if I see a component implementing this interface I understand that is going to be used for a particular purpose.

They bind to your IDE helping developers search for components that implement this interface.

They tighten the contract between the user code and the framework (ag-grid in this case). If we ever change the interface definition in a future version and the user upgrades, he gets a compiler notification and can adapt the code accordingly.

So not implementing the interface is NOT an option and is bad advise in this case. We definitely want the customer to implement the interface for all the reasons above, so in this case we are deciding what we are going to do in this case, but I honestly think that this was not a good move.

Upon further reading of the release notes of 2.4 I can see this is intentional..

Weak types:

Back in TypeScript 1.6, we added a check for excess properties in object literals. This check looked for unexpected properties in object literals, and it happened to catch a large class of bugs. The only shortcoming of the check was that if you didn’t immediately pass your object literal to something of the appropriate type, the check wouldn’t be triggered.

In TypeScript 2.4, we’re adding a similar check for what we call weak types. Any type that contains only optional properties is considered a weak type since it provides few restrictions on what can be assigned to it. For example, this Options type is a weak type:

They include a workaround...

Since this is a breaking change, you may need to know about the workarounds which are the same as those for strict object literal checks:

Declare the properties if they really do exist.
Add an index signature to the weak type (i.e. [propName: string]: {}).
Use a type assertion (i.e. opts as Options).

So your implementation since 2.4 is going to have to include the method that is optional (refresh) even if you are going to leave it empty (same as not implementing it pre 2.4)

For the record... I think this is crazy... 😞

Related Issues:

ag grid Why do I get unstable_flushDiscreteUpdates in AgGridReact [latest]
Hopefully this is helpful in case the deltaRowDataMode prop was missed It was not obvious to me on m...
ag grid reactNext - React Component '...' not created within 1000ms**
Does this issue really fixed? I upgraded to 21.1.0 got no luck Still plenty of errors saying ag-Grid...
ag grid error TS2559: Type 'GroupCellRenderer' has no properties in common with type 'ICellRenderer'.
@Haemoglobin correct speaking as a user BTW this fixes it: add the line: refresh?( params: any ): vo...
ag grid How can I hide only tool panel from ag-grid enterprise?
I found out it’s toolPanelSuppressSideButtons but it’s not in any docs as far as I can tell (surpris...
ag grid Date filter uses HTML5 date input in Chrome, but not other browsers that support it
In 17.1.0 there is option that will always use the browser date picker: I'm submitting a .. ...
components Error: mat-form-field must contain a MatFormFieldControl.
You have to add to app.module.ts: Bug feature request or proposal: When doing a karma/jasmine test I...
angular Angular5.x lazyLoad problem, undefined is not a function
For others that find this issue via Google as i did: I had the same problem when trying to lazy load...
angular Cyclic dependency error with HttpInterceptor
I resolved simply not setting authService in constructor but getting in the intercept function. ...
angular cli Issue: Cannot read property 'thisCompilation' of undefined
Here is the answer from issues #9793 : npm remove webpack npm install webpack@3.11.0 ...
angular Uncaught Error: Can't resolve all parameters for ...
You are missing an @Injectable() annotation on your ApiService Support requests like these should li...
ngx bootstrap fix(tooltip): tooltip flickering when hover the mouse on the border on the tooltip position
Add pointer-events: none; to the tooltip css problem solved! .tooltip { pointer-events: none; } ...
angular Force reload/refresh current route with RouteReuseStrategy
Hi If you really need to trick the Router into reloading the component on each routerLink click ...
angular Misleading error message "Cannot find a differ supporting object '[object Object]'"
I just ran into the same issue I'm not sure if the recommended solution will work for my case ...
angular cli Error | Could not find plugin "proposal-numeric-separator" | Generating ES5 bundles for differential loading
Try to install @babel/compat-data: ~7.8.0 to devDependencies This is the only workaround which helpe...
angularfire Missing exported members after updating to Angular 6.0.0
It looks like rxjs-compat is missing Use npm i rxjs-compat to install the missing rxjs-compat. ...
sheetjs How to simply export a Worksheet to xlsx?
There are two issues: each object is mapped to a row so if you want a row with name John and city Se...
angular cli Using invalid environment causes error in build (was "ERROR in Cannot read property 'length' of undefined")
Probably not the same cause but we had the same error (Cannot read property 'length' of undefined) w...
angular cli ng serve method ip not open in another machines
The solution is simple Just bind to the correct interface address via ng serve --host= ...
angular cli Incorrect JS paths when ng build -prod is deployed in a subfolder
When you're deploying to non-root path within a domain you'll need to manually update the <base href...
angular update 2 to 4 has problem [ts] Property 'map' does not exist on type 'Observable<Response>'.
I met the same problem with the angular cli 6.0.0 and rxjs 6.1.0 And I solved the problem by replaci...
angular cli Installation error: permission denied for node-sas
sudo npm install -g --unsafe-perm --verbose @angular/cli Installation error (node-sass) with: node v...
angular cli ng build -prod Module not found: Error: Can't resolve './$$_gendir/app/app.module.ngfactory'
Instead of use ng build --prod use ng build --env=prod UPDATE As many of us (thx) have mention this ...
angularfire ERROR TypeError: Object(…) is not a function” using AngularFirestore and firebase
@jamesdaniels Yes npm install rxjs@6 rxjs-compat@6 --save It solved the issue. I want to use firebas...
storybook Webpack 4 support?
I'm getting the below error when running Storybook with a project using Webpack 4; This is preventin...
angular cli Property 'controls' does not exist on type 'AbstractControl'.
Got it! Looked at the docs - FormArray The FormArray class contains the controls property ...
angular Angular2 AoT Compiler Errors
pls try /cc @chuckjaz When I try to compile my project with ngc it throws the below error: Error: Er...
angular cli [Bug] cli needs to be reloaded when a lazy loaded module is added in routes (FIXED)
I recomended change { path: 'user-panel' loadChildren: './user-panel/user-panel.module#UserPanelModu...
prettier Change HTML/JSX formatting to have one attribute/prop per line
The point I am trying to make is that the vertical space matters Wasting it (too much) has negative ...
angularfire @firebase/firestore: Firestore (5.8.0): timestampsInSnapshots
eg: app.module.ts Version info Angular: 7.2.1 Firebase: 5.8.0 AngularFire: 5.1.1 In the newest fireb...
angular cli AOT build fails
I noticed same problem and after npm i enhanced-resolve@3.3.0 I can build with AOT ...
angular cli Cannot find name 'require'. using relative paths...
Ahhh here we go try adding declare var require: any; To src/typings.d.ts I am using a config with re...
components [Table] Add example with dynamic columns
For those interested Bug feature request ...
angular starter How to include Twitter Bootstrap 3 using webpack
I just tested it now Hi I have taken a look at #214 & #215 but these don't really explain how to set...
angular HttpClient.delete() cannot handle a body in its request
It would be great to have body param in .delete() We just migrated our project to HttpClient and for...
ng bootstrap No provider for NgbActiveModal! => "Components as content"
try to provide NgbActiveModal on app.module Bug description: When trying to implement the Modal usin...
angular cli "No NgModule metadata found for 'AppModule'" after Upgrade to Angular 5.1.0 and AngularCli 1.6.0
I got the same error The issue is fixed only when i manually re installed angular/cli The webpack sh...
angularfire 5.2.1 AngularFireAuthGuard causes TypeError: source.lift is not a function
I worked in this way Performing basic docs for AngularFireAuthGuard produces an error related to sou...
angular cli ng serve doesn't listen other than localhost
Works with command ng serve --host OS? Windows 7 8 or 10 Linux (which distribution) Mac OSX ...
angular Http - Observable completed function not firing
Third callback haven't been called when error occures ES6 promises hasn't method finally only then a...
angular Using multiple components in different modules causing "Type X is part of the declarations of 2 modules" error
as @brandonroberts saids create a shared module like this: then use the SharedModule like this.. ...
core How to unit test a component with TranslateService and the translate pipe?
I'm just coming up to speed on this stack and was trying to wrap some tests around an Ionic componen...
angular cli ng: command not found
Removing NODE and using NVM instead fixed a lot of issues After installing angular-cli with the help...
angular cli ng build fails with error Cannot find module 'webpack/lib/node/NodeTemplatePlugin' after updating to v1.3.0
I faced this issue many times recently and always the fix worked for me is : Bug Report or Feature R...
angular cli -bash: ng: command not found
This was a pain to figure out Please provide us with the following information: OS? Mac OSX (Seirra)...
angular cli Uncaught TypeError: Cannot read property 'apply' of undefined on new install
Downgraded to zone.js@0.8.5 and the problem disappeared. Bug Report or Feature Request (mark with an...
angular cli I am on Angular 5 and CLI 1.5 and I get an error
I faced this error after updating a non-CLI project to Angular 5 and @ngtools/webpack 1.8.0 ...
ionic framework Bugs when run ionic cordova run ios --device or use --target options
Hi @fwagner thank you for the good news I already build and upload to production So the problem here...
core [Question] How to include html tags in your translation strings
If we do <p [innerHtml]={{ 'withSpan' | translate }}></p> we get an error: Parser Error: Got interpo...
angular starter Unit test error: Router outlet is not a known element
@eamell - I am still on rc6 and I changed my configuration to RouterTestingModule and it still works...