PEP 728: TypedDict with Typed Extra Items

I think PEP could benefit if it would explicitly specify what default values for new parameters are.
As I understand it’s closed=False and extra_items=typing.NoExtraItems.

After reading the PEP I had a question why not just make it work using just 1 parameter - extra_items. But after reading the discussion, clarity of closed=True, that would be used in the majority of cases, does makes sense. But I don’t really like that from the start there are two options to do the same thing - extra_items=Never and closed=True. And PEP doesn’t prescribe which way is preferable, so we’ll end up seeing both in the code.
I agree with what was mentioned above that maybe Never is too clever here and maybe it shouldn’t be supported and not have a meaning of closed=True, so the only way to make a dict closed is to actually do closed=True.

Also, since PEP is referring in it’s Motivation to the problem that currently for .items() /.values()/.keys() type checkers couldn’t infer more precise return types, so shouldn’t it include a section for recommended/expected behaviour from type checkers in that regard if PEP728 will be accepted? Or to add a note that it’s out of scope for this PEP and the exact behaviour should be decided later.

# pyright: enableExperimentalFeatures=true
from typing import TypedDict, assert_type, Literal

class Movie(TypedDict, closed=True):
    name: str
    year: int

def test(m: Movie):
    assert_type(list(m.items()), list[tuple[Literal["name", "year"], str | int]])
    assert_type(list(m.values()), list[str | int])
    assert_type(list(m.keys()), list[Literal["name", "year"]])

# Example from Motivation section.
class Movie(TypedDict, closed=True):
    name: str
    director: str

class Book(TypedDict, closed=True):
    name: str
    author: str

def fun(entry: Movie | Book) -> None:
    if "author" in entry:
        assert_type(entry, Book)