Skip to content

Property initialisation check in TS 3.5 is too strict for ember 3.5 #31682

Open
@sandersn

Description

@sandersn

Start reading here: #29395 (comment)

import Component from '@ember/component';
import defaultTo from 'lodash/default-to';

export default class Welcome extends Component {
  greeting: string = defaultTo(this.greeting, "Hello");
}

Briefly, ember 3.5's Components have properties that are initialised by the base to a value, but Typescript doesn't know about this. Users should be able to squash the error by writing greeting!: string = ..., or by turning off strictPropertyInitialization, but can't today.

Activity

added this to the Backlog milestone on May 30, 2019
kevinbarabash

kevinbarabash commented on Jun 30, 2019

@kevinbarabash

I've been experimenting with the idea of adding pragmas for each of the strict flags to enabling/disabling on a per file basis. The thinking was that there would be a new flag that disables strict checking of any type in .d.ts files and except for library definitions containing @strict-property-initialization (or other strict pragmas as needed). I think this could address the general problem of people wanting to use various strict flags with their code but not being able to because they break various libraries.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    In DiscussionNot yet reached consensusSuggestionAn idea for TypeScript

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

      Development

      No branches or pull requests

        Participants

        @sandersn@kevinbarabash@RyanCavanaugh

        Issue actions

          Property initialisation check in TS 3.5 is too strict for ember 3.5 · Issue #31682 · microsoft/TypeScript