javascript - Utvide Data-objektet i TypeScript
Jeg prøver å utvide et dataobjekt i TypeScript ved å legge til noen nye felt. Selv om jeg antar at det er et ganske vanlig mønster i JavaScript, får jeg det ikke til å kompilere uten å gjøre bar valgfritt i koden som nedenfor.
Jeg lurer på om det finnes noen måte å unngå å gjøre bar valgfri på. Alle forslag vil bli godt mottatt, takk.
interface BaseDataObject {
foo: string;
}
interface ExtendedDataObject extends BaseDataObject {
bar?: string;
}
function extendData(input : BaseDataObject) : ExtendedDataObject {
var output : ExtendedDataObject = input;
output.bar = input.foo + ' some suffix';
return output;
}
Svar #1
Du kan gjøre dette ved å kompileringstid-typere input til ExtendedDataObject i stedet for bare å tilordne det til output:
interface ExtendedDataObject extends BaseDataObject {
bar: string;
}
function extendData(input : BaseDataObject) : ExtendedDataObject {
var output = input as ExtendedDataObject;
output.bar = input.foo + ' some suffix';
return output;
}
Denne typen kast kalles offisielt typepåstand, og den forteller kompilatoren å stole på deg at objektet kan behandles som typen du angir.
