The error reported by tsc:
src/js/protos.d.ts(18180,19): error TS2420: Class 'NamePart' incorrectly implements interface 'NamePart$Properties'.
Property 'namePart' is missing in type 'NamePart'.
Looks like the class that implements the type has to enumerate every property. See http://www.typescriptlang.org/play/#src=type%20NamePart%24Properties%20%3D%20%7B%0A%09namePart%3A%20string%3B%0A%09isExtension%3A%20boolean%3B%0A%7D%3B%0A%0Aclass%20NamePart%20implements%20NamePart%24Properties%20%7B%0A%7D.
The generated definition excerpt as of a1f23e0:
namespace UninterpretedOption {
/**
* Properties of a NamePart.
* @typedef google.protobuf.UninterpretedOption.NamePart$Properties
* @type Object
* @property {string} namePart NamePart namePart.
* @property {boolean} isExtension NamePart isExtension.
*/
type NamePart$Properties = {
namePart: string;
isExtension: boolean;
};
/**
* Constructs a new NamePart.
* @exports google.protobuf.UninterpretedOption.NamePart
* @implements google.protobuf.UninterpretedOption.NamePart$Properties
* @constructor
* @param {google.protobuf.UninterpretedOption.NamePart$Properties=} [properties] Properties to set
*/
class NamePart implements google.protobuf.UninterpretedOption.NamePart$Properties {
/**
* Constructs a new NamePart.
* @exports google.protobuf.UninterpretedOption.NamePart
* @implements google.protobuf.UninterpretedOption.NamePart$Properties
* @constructor
* @param {google.protobuf.UninterpretedOption.NamePart$Properties=} [properties] Properties to set
*/
constructor(properties?: google.protobuf.UninterpretedOption.NamePart$Properties);
/**
* Creates a new NamePart instance using the specified properties.
* @param {google.protobuf.UninterpretedOption.NamePart$Properties=} [properties] Properties to set
* @returns {google.protobuf.UninterpretedOption.NamePart} NamePart instance
*/
public static create(properties?: google.protobuf.UninterpretedOption.NamePart$Properties): google.protobuf.UninterpretedOption.NamePart;
/**
* Encodes the specified NamePart message. Does not implicitly {@link google.protobuf.UninterpretedOption.NamePart.verify|verify} messages.
* @param {google.protobuf.UninterpretedOption.NamePart$Properties} message NamePart message or plain object to encode
* @param {$protobuf.Writer} [writer] Writer to encode to
* @returns {$protobuf.Writer} Writer
*/
public static encode(message: google.protobuf.UninterpretedOption.NamePart$Properties, writer?: $protobuf.Writer): $protobuf.Writer;
/**
* Encodes the specified NamePart message, length delimited. Does not implicitly {@link google.protobuf.UninterpretedOption.NamePart.verify|verify} messages.
* @param {google.protobuf.UninterpretedOption.NamePart$Properties} message NamePart message or plain object to encode
* @param {$protobuf.Writer} [writer] Writer to encode to
* @returns {$protobuf.Writer} Writer
*/
public static encodeDelimited(message: google.protobuf.UninterpretedOption.NamePart$Properties, writer?: $protobuf.Writer): $protobuf.Writer;
/**
* Decodes a NamePart message from the specified reader or buffer.
* @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
* @param {number} [length] Message length if known beforehand
* @returns {google.protobuf.UninterpretedOption.NamePart} NamePart
* @throws {Error} If the payload is not a reader or valid buffer
* @throws {$protobuf.util.ProtocolError} If required fields are missing
*/
public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.UninterpretedOption.NamePart;
/**
* Decodes a NamePart message from the specified reader or buffer, length delimited.
* @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
* @returns {google.protobuf.UninterpretedOption.NamePart} NamePart
* @throws {Error} If the payload is not a reader or valid buffer
* @throws {$protobuf.util.ProtocolError} If required fields are missing
*/
public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.UninterpretedOption.NamePart;
/**
* Verifies a NamePart message.
* @param {Object.<string,*>} message Plain object to verify
* @returns {?string} `null` if valid, otherwise the reason why it is not
*/
public static verify(message: { [k: string]: any }): string;
/**
* Creates a NamePart message from a plain object. Also converts values to their respective internal types.
* @param {Object.<string,*>} object Plain object
* @returns {google.protobuf.UninterpretedOption.NamePart} NamePart
*/
public static fromObject(object: { [k: string]: any }): google.protobuf.UninterpretedOption.NamePart;
/**
* Creates a NamePart message from a plain object. Also converts values to their respective internal types.
* This is an alias of {@link google.protobuf.UninterpretedOption.NamePart.fromObject}.
* @function
* @param {Object.<string,*>} object Plain object
* @returns {google.protobuf.UninterpretedOption.NamePart} NamePart
*/
public static from(object: { [k: string]: any }): google.protobuf.UninterpretedOption.NamePart;
/**
* Creates a plain object from a NamePart message. Also converts values to other types if specified.
* @param {google.protobuf.UninterpretedOption.NamePart} message NamePart
* @param {$protobuf.ConversionOptions} [options] Conversion options
* @returns {Object.<string,*>} Plain object
*/
public static toObject(message: google.protobuf.UninterpretedOption.NamePart, options?: $protobuf.ConversionOptions): { [k: string]: any };
/**
* Creates a plain object from this NamePart message. Also converts values to other types if specified.
* @param {$protobuf.ConversionOptions} [options] Conversion options
* @returns {Object.<string,*>} Plain object
*/
public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any };
/**
* Converts this NamePart to JSON.
* @returns {Object.<string,*>} JSON object
*/
public toJSON(): { [k: string]: any };
}
}
The error reported by
tsc:Looks like the class that implements the type has to enumerate every property. See http://www.typescriptlang.org/play/#src=type%20NamePart%24Properties%20%3D%20%7B%0A%09namePart%3A%20string%3B%0A%09isExtension%3A%20boolean%3B%0A%7D%3B%0A%0Aclass%20NamePart%20implements%20NamePart%24Properties%20%7B%0A%7D.
The generated definition excerpt as of a1f23e0: