diff --git a/docs/angular.io-package/templates/class.template.html b/docs/angular.io-package/templates/class.template.html index 841077020c..b17d1d3651 100644 --- a/docs/angular.io-package/templates/class.template.html +++ b/docs/angular.io-package/templates/class.template.html @@ -31,7 +31,7 @@ p.location-badge. {%- for member in doc.members %}{% if not member.private %} .l-sub-section - h3 {$ member.name $} + h3 {$ member.name $}{% if member.optional %}?{% endif %} {% if member.parameters %} pre.prettyprint diff --git a/docs/dgeni-package/mocks/readTypeScriptModules/interfaces.ts b/docs/dgeni-package/mocks/readTypeScriptModules/interfaces.ts new file mode 100644 index 0000000000..121f15761b --- /dev/null +++ b/docs/dgeni-package/mocks/readTypeScriptModules/interfaces.ts @@ -0,0 +1,4 @@ +export interface MyInterface { + optionalProperty? : string, + (param: string) : string +} \ No newline at end of file diff --git a/docs/dgeni-package/processors/readTypeScriptModules.js b/docs/dgeni-package/processors/readTypeScriptModules.js index a294543180..dc2ca531f6 100644 --- a/docs/dgeni-package/processors/readTypeScriptModules.js +++ b/docs/dgeni-package/processors/readTypeScriptModules.js @@ -212,6 +212,10 @@ module.exports = function readTypeScriptModules(tsParser, readFilesProcessor, mo memberDoc.returnType = getReturnType(typeChecker, memberSymbol); } + if(memberSymbol.flags & ts.SymbolFlags.Optional) { + memberDoc.optional = true; + } + return memberDoc; } diff --git a/docs/dgeni-package/processors/readTypeScriptModules.spec.js b/docs/dgeni-package/processors/readTypeScriptModules.spec.js index f8208d53b8..afb59e95a1 100644 --- a/docs/dgeni-package/processors/readTypeScriptModules.spec.js +++ b/docs/dgeni-package/processors/readTypeScriptModules.spec.js @@ -45,6 +45,22 @@ describe('readTypeScriptModules', function() { }); + describe('interfaces', function() { + + it('should mark optional properties', function() { + processor.sourceFiles = [ 'interfaces.ts']; + var docs = []; + processor.$process(docs); + + var moduleDoc = docs[0]; + var exportedInterface = moduleDoc.exports[0]; + var member = exportedInterface.members[0]; + expect(member.name).toEqual('optionalProperty'); + expect(member.optional).toEqual(true); + }); + }); + + describe('ordering of members', function() { it('should order class members in order of appearance (by default)', function() { processor.sourceFiles = ['orderingOfMembers.ts']; diff --git a/docs/dgeni-package/templates/class.template.html b/docs/dgeni-package/templates/class.template.html index 23d608b30a..f97ee97b14 100644 --- a/docs/dgeni-package/templates/class.template.html +++ b/docs/dgeni-package/templates/class.template.html @@ -23,7 +23,9 @@ defined in {$ githubViewLink(doc) $} {%- for member in doc.members %}{% if not member.private %}
-

{$ member.name $}{$ paramList(member.params) $}

+

+ {$ member.name $}{% if member.optional %}?{% endif %}{$ paramList(member.params) $} +

{% marked %} {$ member.description $} {% endmarked %} diff --git a/docs/dgeni-package/templates/type-definition.template.html b/docs/dgeni-package/templates/type-definition.template.html index afa928315e..7b22c94039 100644 --- a/docs/dgeni-package/templates/type-definition.template.html +++ b/docs/dgeni-package/templates/type-definition.template.html @@ -29,6 +29,7 @@ declare module "{$ module.id $}" { {%- for member in export.members -%} {$ commentBlock(member, 5) $} {$ member.name $} + {%- if member.optional %}?{% endif -%} {%- if member.parameters %}({% for param in member.parameters %}{$ param $}{% if not loop.last %}, {% endif %}{% endfor %}){%- endif %} {%- if member.returnType %}: {$ member.returnType $}{%- else -%}: any{% endif -%} ;