所以我有
type newType = ResourcesKey | string;
enum ResourcesKey {
FirstString= 'path',
...
}
然后我有一个接受实例的函数,我想测试它是字符串还是枚举,但是在打字稿中,这两个被认为是相同的吗?
Function(instance: newType)
{
if (instance instanceof ResourcesKey) {
}
}
这将返回错误 错误TS2359:“ instanceof”表达式的右侧必须为“ any”类型或可分配给“ Function”接口类型的类型。
我可以做些什么来将实例与枚举类型进行比较吗?
例如在C#中,我可能可以做类似的事情
if (typeof (instance) == ResourcesKey) {
}
我当然可以解决它,但是我想知道首选的行动方案是什么
答案 0 :(得分:1)
sshHook = SSHHook(ssh_conn_id='my_conn_id',keepalive_interval=240)
task_ssh_bash = """
cd ~/projects &&
JID=$(sbatch myjob.sh)
echo $JID
sleep 10s # needed
ST="PENDING"
while [ "$ST" != "COMPLETED" ] ; do
ST=$(sacct -j ${JID##* } -o State | awk 'FNR == 3 {print $1}')
sleep 1m
if [ "$ST" == "FAILED" ]; then
echo 'Job final status:' $ST, exiting...
exit 122
fi
echo $ST
"""
task_ssh = SSHOperator(
task_id='test_ssh_operator',
ssh_hook=sshHook,
do_xcom_push=True,
command=task_ssh_bash,
dag=dag)
仍然只适用于类,因此您不能将其与枚举一起使用。
运行时枚举只是字符串,因此对此进行测试意味着实际测试字符串值是否在枚举中。您可以创建一个自定义的typeguard,它将进行检查并通知编译器该类型:
instanceof