You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Search Terms:
Nested Interface
Interface Function
Deep Nested Interface
Deep Object Path
Code
Example 1:
interfaceTopLevel{aProperty: {aMethod(): {anotherMethod(): string}};}letmockUp: TopLevel={aProperty: {aMethod: ()=>{return{anotherMethod: ()=>{return'string';},woops: ()=>{// This should cause an error, not defined in the interfacereturn0;}};},wrongAgain: ()=>{// Causes error as expectedreturn0;}},shouldNotBeHere: 'string'// This should cause an error, not defined in the interface};
Example 2:
interfaceFirstLevel{aProperty: SecondLevel;}interfaceSecondLevel{aMethod(): ThirdLevel;}interfaceThirdLevel{anotherMethod(): string;}letmockUpTwo: FirstLevel={aProperty: {aMethod: (): ThirdLevel=>{return{anotherMethod: ()=>{return'string';},woops: ()=>{// Causes error as expectedreturn0;}};},wrongAgain: ()=>{// Causes error as expectedreturn0;}},shouldNotBeHere: 'string'// This should cause an error, not defined in the interface};
Expected behavior:
I was working on some complex nested interfaces with functions and realized that the ts compiler wasn't complaining in certain places when it should have been. These are two examples of the same typed object using a single nested interface and multiple nested interfaces.
Actual behavior:
You can see that there should be three expected errors in both examples but there is only one in the first and two in the second.
TypeScript Version: ^3.1.0-dev.20180802
Search Terms:
Nested Interface
Interface Function
Deep Nested Interface
Deep Object Path
Code
Example 1:
Example 2:
Expected behavior:
I was working on some complex nested interfaces with functions and realized that the ts compiler wasn't complaining in certain places when it should have been. These are two examples of the same typed object using a single nested interface and multiple nested interfaces.
Actual behavior:
You can see that there should be three expected errors in both examples but there is only one in the first and two in the second.
Repo
https://github.com/calebeno/ts-nested-interface-issue
Playground Link:
example 1 (shows NO errors):
https://www.typescriptlang.org/play/#src=interface%20TopLevel%20%7B%0D%0A%20%20%20%20aProperty%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20aMethod()%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20anotherMethod()%3A%20string%0D%0A%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%7D%3B%0D%0A%7D%0D%0A%0D%0Alet%20mockUp%3A%20TopLevel%20%3D%20%7B%0D%0A%20%20%20%20aProperty%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20aMethod%3A%20()%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20anotherMethod%3A%20()%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20'string'%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20woops%3A%20()%20%3D%3E%20%7B%20%20%2F%2F%20This%20should%20cause%20an%20error%2C%20not%20defined%20in%20the%20interface%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%200%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%3B%0D%0A%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20wrongAgain%3A%20()%20%3D%3E%20%7B%20%20%2F%2F%20Causes%20error%20as%20expected%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20return%200%3B%0D%0A%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%7D%2C%0D%0A%20%20%20%20shouldNotBeHere%3A%20'string'%20%20%2F%2F%20This%20should%20cause%20an%20error%2C%20not%20defined%20in%20the%20interface%0D%0A%7D%3B%0D%0A
example 2 (shows NO errors):
https://www.typescriptlang.org/play/#src=interface%20FirstLevel%20%7B%0D%0A%20%20%20%20aProperty%3A%20SecondLevel%3B%0D%0A%7D%0D%0A%0D%0Ainterface%20SecondLevel%20%7B%0D%0A%20%20%20%20aMethod()%3A%20ThirdLevel%3B%0D%0A%7D%0D%0A%0D%0Ainterface%20ThirdLevel%20%7B%0D%0A%20%20%20%20anotherMethod()%3A%20string%3B%0D%0A%7D%0D%0A%0D%0Alet%20mockUpTwo%3A%20FirstLevel%20%3D%20%7B%0D%0A%20%20%20%20aProperty%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20aMethod%3A%20()%3A%20ThirdLevel%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20anotherMethod%3A%20()%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20'string'%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20woops%3A%20()%20%3D%3E%20%7B%20%20%2F%2F%20Causes%20error%20as%20expected%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%200%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%3B%0D%0A%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20wrongAgain%3A%20()%20%3D%3E%20%7B%20%20%2F%2F%20Causes%20error%20as%20expected%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20return%200%3B%0D%0A%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%7D%2C%0D%0A%20%20%20%20shouldNotBeHere%3A%20'string'%20%20%2F%2F%20This%20should%20cause%20an%20error%2C%20not%20defined%20in%20the%20interface%0D%0A%7D%3B%0D%0A
Related Issues:
The text was updated successfully, but these errors were encountered: