Conversation
| @@ -16,8 +14,6 @@ tests/cases/conformance/types/objectTypeLiteral/methodSignatures/objectTypesWith | |||
|
|
|||
| class C { | |||
| x?: number; // error | |||
There was a problem hiding this comment.
comments are out of date now.
|
can you add a declaration emit test. |
|
can you also add a test with |
|
also another one for extending classes, making optionals non-optional, and making non-optionals optional. |
|
@ahejlsberg Nice job! Just curious, can decorators fetch information that can determine whether the target is declared optional? |
no, see #8126 |
|
Optional class properties don't seem to work for abstract properties in typescript 2.0.3, subclasses of the abstract class are forced to implement the property. |
|
@Roam-Cooper that's the point of the |
|
Ah, yes, wasn't thinking straight! My bad. 😃 |
|
Does this PR enable making class getters optional? I can't figure out how to mark getters as optional. I have no idea where the question mark would go. |
|
@bradenhs I have the same question. Would be nice for my situation, where I want to make a custom derived class (which has getters) compatible with the base class definition/type-shape. |
This PR makes it possible to declare optional properties and methods in classes, similar to what is already permitted in interfaces. For example:
When compiled in
--strictNullChecksmode, optional properties and methods automatically haveundefinedincluded in their type. Thus, thebproperty above is of typenumber | undefinedand thegmethod above is of type(() => number) | undefined. Type guards can be used to strip away theundefinedpart of the type: