OK, I think I have it myself, at least partially...
part 1: define the output param in ControlManifest.Input.xml:
<property name="output" display-name-key="outputVal" description-key="Output from the conrol" of-type="SingleLine.Text" usage="output"/>
part 2: define the datatype of the output in manifesttypes.d.ts:
export interface IOutputs { output?: string; }
part 3: attach your own notifyoutputchanged event to the init param:
public init(context: ComponentFramework.Context<IInputs>, notifyOutputChanged: () => void, state: ComponentFramework.Dictionary, container:HTMLDivElement)
{
this._notifyOutputChanged = notifyOutputChanged;
}
part 4: designate a return val for the type defined in manifesttypes:
public getOutputs(): IOutputs { return {output : "test"}; }
part 5: call your notifyoutputchanged event wherever in code you want the change recognized:
this._notifyOutputChanged();
part 6: in PowerApps, add your pcf control, then add a label valued as <controlname>.output
... All that still missed the onchange part, but I am sure I will figure that out eventually.