Skip to content

Return value of higher order functions looses excess property checks #39635

Closed
@essenmitsosse

Description

@essenmitsosse

TypeScript Version: 3.9.2 (doesn't work in any version I tested, including 4)

Search Terms:
higher order function return value object excess property check

Code

interface Foo {
	foo: {
		bar: number
	}
}

// Error for unknown property buz
const getFoo = (): Foo  => ({
	foo: {
		bar: 1,
		buz: 2,
	}
})

// Typeing should be the same. Autocomplete works, but no error is shown for the excessive property buz
const getFoo3 = (): () => Foo  => () => ({
	foo: {
		bar: 1,
		buz: 2
	}
})

// Same problem as above. The issue doesn't seem to be directly related to higher order functions
const getFoo2: () => Foo = ()  => ({
	foo: {
		bar: 1,
		buz: 2,
	}
})

Expected behavior:
Error should be thrown for the excess property in all cases.

Actual behavior:
Error for excess properties is only thrown, when the return value of the function is directly typed.

Playground Link

Related Issues: -

Metadata

Metadata

Assignees

No one assigned

    Labels

    DuplicateAn existing issue was already createdFix AvailableA PR has been opened for this issue

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions