如何在独立函数中读取session.user.name?

如题,事情是这样的,因为我个人的习惯,会为一类函数单独写一个模块。
比如昨天,我写了一个模块单独负责处理数据,以及为未来可能得链接数据库做准备。
有这样一个函数

export function getNickname(session:Session){
    // 这里应该写泛型的,可是我不会写啊!
    if((session.user as any).name){
        return (session.user as any).name
    }
    return session.username
}

函数非常简单,而我知道,调用这个函数的指令都使用了.userField(['name'])所以是应该没问题的。
实际上不应该这么写的,那我应该怎么通过书写泛型和类型声明来让ts知道我这里是有name的呢?
我试过学习 按需加载与自动更新 | Koishi只使用类型声明

declare module 'koishi'{
    namespace User{
        name: string
    }
}

但是是不行的,我看到这个user是个Oberver<unknow>类型的,表示,我应该也许大概得用泛型。但我完全不知道这里应该怎么书写。
求助一下大佬。

2 个赞
session: Session<'name'>
4 个赞