Еще вопросец,
https://www.typescriptlang.org/play/index.html?ssl=1&ssc=1&pln=5&pc=2#code/C4TwDgpgBAYgrgOwMYEYoF4oAoBOB7PYALigGdgcBLBAcwBooA3AQwBs4ISE4BbAIwg4GAawggS5KrQCUGAHxM8lACYBuALAAoUJFiIkAJgzZ8hCRWr0mbDiT4FWEZghFiA-FwiNBs9AsZKalpaOtDwyMbhqFAAZHrIBhqaWkh4CORQAGb6JFHGuATADCzsEK4gvgoA3lpQUKnpeI4AdKx4NAWEzcB4AKpgkDgAwsykEFjS0kkAvsGa2chYAOTAEORLDJlsY1NAA
как при юнионе типов вывести их в саму функцию,
например так:
const func: Func = (root: string, value: number|boolean, key?: never|string)